让我拥有以下Python脚本script.py
:
a = 1
b = 10
for i in range(b):
a += 1
print(a)
我知道我可以在globals()
中使用script.py
来显示名称空间:
{'__file__': 'counter.py', '__doc__': None, 'i': 9, '__spec__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000027C8D9402E8>, '__name__': '__main__', '__cached__': None, 'b': 10, 'a': 11, '__package__': None, '__builtins__': <module 'builtins' (built-in)>}
我想知道您是否可以从globals()
外部模仿script.py
?换句话说,我想运行other_script.py
并查看script.py
的{{1}}输出。 globals()
有用吗?
编辑:如果可能,可以在for循环中以import counter
的每个增量来更新script.py
的{{1}}输出吗?
答案 0 :(得分:1)
import counter
的问题在于counter.py中的名称空间将被更改为当前名称空间,因为您正在将其导入当前名称空间。
但是,如果您只想看一下counter.py输出,则可以只使用exec()
函数来单独执行它。这不会更改其名称空间。
示例:
在 counter.py 中:
a = 1
b = 10
for i in range(b):
print('\na = ', a)
print('globals = ', globals())
a += 1
print('\na = ', a)
print('globals = ', globals())
在 other_script.py 中:
exec(open('counter.py').read())