这可能是一个愚蠢的问题,但我不懂Python如何使用我们没有定义或导入的对象。你知道吗
考虑以下示例,使用Python的datetime模块:
from datetime import date
date1 = date(2019,1,1)
date2 = date(2019,1,5)
type(date2-date1) #<class 'datetime.timedelta'>
type(date2) #<class 'datetime.date'>
那么date2-date1
属于timedelta
类,尽管我们还没有导入它。你知道吗
(我可能还可以编写其他示例,在这些示例中,我们获得了对象,尽管我们还没有定义它们。)
怎么会这样?你知道吗
我是否应该考虑一下这些新对象,它们只是作为内存中由其他函数返回的片段出现,即使我们还没有定义它们,它们本身也包含足够的信息,以便Python解释器能够有意义地将type()
和其他函数应用于它们?你知道吗
Date正在某处导入timedelta,因为它可能是一个依赖项,即使您看不到它。你知道吗
您错误地认为
import
限制了加载到内存中的内容。import
限制模块全局变量中绑定的名称。你知道吗整个模块仍然处于加载状态,该模块的依赖项也处于加载状态。仅仅因为您的名称空间没有绑定对
datetime.timedelta
对象的引用并不意味着它对datetime
模块不可用。你知道吗参见^{} statement documentation :
因此,模块的加载和初始化是一个单独的步骤,每个模块执行一次。第二步绑定命名空间中的名称。你知道吗
from datetime import date
确保datetime
模块已加载,然后找到datetime.date
,并将date = datetime.date
添加到您的命名空间中。你知道吗如果您想查看加载了哪些模块,请查看^{} mapping 。这就是^{} statement machinery checks 用来查看给定模块是否已加载的位置。你知道吗
相关问题 更多 >
编程相关推荐