首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同模块之间的全局变量共享行为不同。

不同模块之间的全局变量共享行为不同。
EN

Stack Overflow用户
提问于 2018-07-04 16:46:56
回答 1查看 198关注 0票数 0

在config.py中,我有:

代码语言:javascript
复制
config = 0
#config = []
def init_config():
    global config
    config = 1
    #config.append("1")
    print("init", config)

在main.py中,我有:

代码语言:javascript
复制
from config import init_config
from config import config

def main():
    init_config()
    print("main", config)

if __name__ == '__main__':
    main()

以及位于同一个目录中的config.py和main.py。运行python main.py之后,我得到了:

代码语言:javascript
复制
init 1
main 0

但是,如果我使用config.py中的评论行,我得到:

代码语言:javascript
复制
init ['1']
main ['1']

那么,为什么会发生这种差异呢?(Python 3.5.5)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-04 16:54:08

config.py导入变量config后,变量config成为驻留在main.py名称空间中的config.config的一个单独副本。您应该将import config作为一个模块访问,然后将变量config作为一个属性访问到模块config

代码语言:javascript
复制
import config

def main():
    config.init_config()
    print("main", config.config)

if __name__ == '__main__':
    main()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51178081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档