如果我有一个模块Test
,并且如果我需要列出其中的所有函数,我将执行以下操作:
import Test
dir(Test)
除非我导入模块,否则我将无法使用其中定义的函数。
但是__builtin__
模块中的所有函数都可以在不导入的情况下使用。但是没有import __builtin__
我就不能做dir(__builtin__)
。这是否意味着我们在不导入整个模块的情况下使用这些函数?
from __builtin__ import zip
是上面说的吗?但如果我这样做,我会
NameError: name 'zip' is not defined
有人能解释一下这种行为吗?
正如the Python language docs中所解释的,Python中的名称首先在本地作用域中查找,然后在任何封闭的本地作用域中查找,然后在模块级作用域中查找,最后在内置的命名空间中查找。所以内置的是特殊的外壳。它们不是在模块的作用域中导入的,但是如果在其他任何地方都找不到名称,Python将在作用域
__builtin__
中查找它。请注意,您可以访问此作用域的内容而不导入它。一种便携式的方法是
在CPython中,这同样有效
但这被认为是一个实现细节,可能不适用于其他Python实现或将来的版本。
我对python一点也不了解,但也许
dir(__builtins__)
,加上一个“s”,就是你想要的吗?在纯Python 3.1上为我工作。
当python解释器启动时,默认情况下它将执行如下操作
from __builtin__ import *
它允许您使用在
__builtin__
模块中定义的所有函数/属性但是,要使用
__builtin__
符号本身,您需要导入
__builtin__
这就是import语句语法的工作原理。
相关问题 更多 >
编程相关推荐