首页 > 解决方案 > Python 3 和模块中的全局变量

问题描述

main1.py

import mya
a=10
mya.increment_a()
a=a-5
print(a)

模块 mya.py

def increment_a():
    global a

    a=a+1
    print(a)

名称“a”未定义。我不明白为什么。我在模块中将变量 a 声明为全局变量,因此从此时开始 a=0 就像在 mail1.py upd 中一样:我需要全局工作。在 main.py 中设置变量“a”的起始值,模块 mya.py 中的函数将编辑“a”,并将新值返回给 main.py 以供进一步使用。--- 封闭主题--- 现在我在工作中使用“参数”和“返回”:

mya.py

def increment_a(a):
    a=a+1
    print(a)
    return a

main1.py

import mya
a=0
print(a)
a=mya.increment_a(a)
a=a+10
print(a)

标签: pythonpython-3.xvariablesmoduleglobal

解决方案


导入模块中全局变量的可见性

Python 中的全局变量对于一个模块来说是全局的,而不是跨所有模块。(很多人对此感到困惑,因为在 C 语言中,全局在所有实现文件中都是相同的,除非您明确地创建它static。)

处理它的一种方法是:

import mya
mya.a=3
mya.increment_a()

推荐阅读