Python 为什么内置既是模块又是dict

Python 为什么内置既是模块又是dict,python,python-module,built-in,Python,Python Module,Built In,我正在使用内置模块插入一些实例,以便全局访问它们以进行调试。\uuuu内置\uuuuu模块的问题在于,它是主脚本中的一个模块,也是模块中的一个dict,但由于我的脚本根据情况可以是主脚本或模块,因此我必须执行以下操作: if isinstance(__builtins__, dict): __builtins__['g_frame'] = 'xxx' else: setattr(__builtins__, 'g_frame', 'xxx') 有没有比这更短的解决办法?更重要的是

我正在使用内置模块插入一些实例,以便全局访问它们以进行调试。
\uuuu内置\uuuuu
模块的问题在于,它是主脚本中的一个模块,也是模块中的一个dict,但由于我的脚本根据情况可以是主脚本或模块,因此我必须执行以下操作:

if isinstance(__builtins__, dict):
    __builtins__['g_frame'] = 'xxx'
else:
    setattr(__builtins__, 'g_frame', 'xxx')
有没有比这更短的解决办法?更重要的是,
\uuuuuuuuuuuuuuuu
为什么会有这种行为

这里有一个脚本可以看到这一点。创建模块a.py:

#module-a
import b
print 'a-builtin:',type(__builtins__)
创建模块b.py:

#module-b
print 'b-builtin:',type(__builtins__)
现在运行python a.py:

$ python a.py 
b-builtin: <type 'dict'>
a-builtin: <type 'module'>
$python a.py
b-内置:
a-内置:

我想您需要
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
模块(注意单数)

见文件:

CPython实现详细信息:大多数模块的名称为
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
(注意
's'
\uuuuuuuuuuuuuuuuu
的值通常是此模块或此模块的[sic]
\uuuuuuuu dict\uuuuuuu属性的值。由于这是一个实现细节,Python的替代实现可能不会使用它


那蟒蛇3呢<代码>名称错误:未定义名称'\uuuu内置'
@warvariuc:模块已重命名为。您能回答问题的标题吗?
\uuuuuuuuuuuuuuuuuuuuuuuuuu
是否是一个命令?什么时候是一个还是另一个?OP的小细节没有搜索引擎给出的可搜索标题那么重要。请回答此问题。有关更多信息,请参阅[可能重复]您是否尝试使用
导入内置程序
?它给了你什么结果?我按照这里的建议()使用了它,它似乎很有效。