从其他Python进程访问Python名称空间

时间:2019-03-18 11:36:20

标签: python import namespaces globals

让我拥有以下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}}输出吗?

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())
相关问题