python全局命名空间不可访问

时间:2019-04-11 15:53:46

标签: python namespaces global

我可以在同一目录中运行API.py,但不能运行APP.py。错误为“ NameError:未定义名称'a'”。 global()真的是全球性的吗?

API.py:

class Entity():
    def __init__(self,name,value):
        globals()[name]=value

if __name__ == '__main__':
    Entity('a',1)
    print(a)

APP.py

from API import Entity

if __name__ == '__main__':
    Entity('a',1)
    print(a)

1 个答案:

答案 0 :(得分:1)

全局只能由模块中的每个函数访问,而不能由其他导入的模块中的函数访问。

与其让Entity直接设置全局变量,不如让它返回值,然后在APP.py中编写代码以全局设置值。

另一种方法是将全局变量放在其他人导入的共享模块中,然后每个模块都可以对其进行读/写访问。