相关疑难解决方法(0)

为什么__builtins__既是模块又是dict

我使用内置模块插入一些实例,因此可以全局访问它们以进行调试.该__builtins__模块的问题在于它是主脚本中的模块,并且是模块中的dict,但由于我的脚本取决于案例可以是主脚本或模块,我必须这样做:

if isinstance(__builtins__, dict):
    __builtins__['g_frame'] = 'xxx'
else:
    setattr(__builtins__, 'g_frame', 'xxx')
Run Code Online (Sandbox Code Playgroud)

有没有一个解决方法,比这更短?更重要的是,为什么__builtins__这样做?

这是一个看到这个的脚本.创建一个模块a.py:

#module-a
import b
print 'a-builtin:',type(__builtins__)
Run Code Online (Sandbox Code Playgroud)

创建一个模块b.py:

#module-b
print 'b-builtin:',type(__builtins__)
Run Code Online (Sandbox Code Playgroud)

现在运行python a.py:

$ python a.py 
b-builtin: <type 'dict'>
a-builtin: <type 'module'>
Run Code Online (Sandbox Code Playgroud)

python python-module built-in

14
推荐指数
1
解决办法
2720
查看次数

标签 统计

built-in ×1

python ×1

python-module ×1