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

2024-03-29 09:16:58 发布

您现在位置:Python中文网/ 问答频道 /正文

让我们看看我有下面的Python脚本script.py

a = 1
b = 10

for i in range(b):
    a += 1

print(a)

我知道我可以在这个script.py中使用globals()来显示名称空间:

{'__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)>}

我想知道你是否能在script.py之外模仿globals()?换句话说,我想运行other_script.py并查看script.pyglobals()输出。import counter有用吗

编辑:如果可能的话,script.pyglobals输出能否随着for循环中i的每个增量而更新


Tags: inpy脚本名称nonefordoccounter
1条回答
网友
1楼 · 发布于 2024-03-29 09:16:58

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())

其他脚本.py中:

exec(open('counter.py').read())

相关问题 更多 >