为什么Python内置函数不显示在dir()上

2024-10-04 15:19:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用CPython3.6.2,当执行print(dir())时,我得到:

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']

例如,dir内建函数在__builtins__内,因此如果上面的模块只针对print(dir())显示,那么python应该做如下操作:

^{pr2}$

但如果这是真的,我可以看到使用print(dir())模块__builtins__和其他构建函数。在

因此,我的问题是如何查看预加载的模块(使用dir()),而不是内置函数,即使我可以直接访问它们(例如不使用__builtins__.dir)。在


Tags: 模块函数namepackagedocdirloaderfile
2条回答

报价文件:

Without arguments, return the list of names in the current local scope.

您的模块范围中未定义内置函数。就这么简单。在

当然,在显式导入它们之后,您可以在本地范围内创建名称,这些名称指向全局范围中的名称相同的对象。在

这是Python范围解析如何工作的结果。在

Dir()返回当前命名空间中的名称列表。那么为什么它不返回内置函数呢?在

为什么,因为显然它们不在当前名称空间中。在

Import*将把任何模块中的所有函数都转储到当前名称空间中,但这对于提供对内置函数的访问是不必要的。在

同样,如果Python没有找到变量的局部定义,在类或函数中或其他任何地方,如果找不到一个名为被引用的全局变量,它就开始在内置函数模块中查找它。在

TL;DR-为什么看不到使用bare dir()的内置函数?因为它们不在本地范围内,也不需要在那里工作。在

相关问题 更多 >

    热门问题