gpt4 book ai didi

python - Python 中的 __builtin__ 模块

转载 作者:太空狗 更新时间:2023-10-30 02:06:11 25 4
gpt4 key购买 nike

如果我有一个模块 Test 并且我需要列出其中的所有函数,我会这样做:

import Test
dir(Test)

除非我导入模块,否则我将无法使用其中定义的函数。

但是__builtin__模块中的所有函数都可以不用导入就可以使用。但是如果没有 import __builtin__,我将无法执行 dir(__builtin__)。这是否意味着我们可以在不导入整个模块的情况下使用这些函数?

from __builtin__ import zip

是不是和上面的一样?但是如果我执行 del zip,我会得到

NameError: name 'zip' is not defined

谁能解释一下这种行为?

最佳答案

the Python language docs 中所述, Python 中的名称是通过首先在本地作用域中查找它们来解析的,然后在任何封闭的本地作用域中,然后在模块级作用域中,最后在内置函数的命名空间中查找。所以内置函数在某种程度上是特殊的。它们导入到您的模块范围内,但如果在其他任何地方都找不到名称,Python 将在范围__builtin__ 中查找它。

请注意,您无需导入即可访问此范围的内容。一种可移植的方法是

import sys
print(dir(sys.modules["__builtin__"]))

在 CPython 中,这也有效

print(dir(__builtins__))

但这被认为是一个实现细节,可能不适用于其他 Python 实现或 future 版本。

关于python - Python 中的 __builtin__ 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5325021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com