这是我的代码:

模块settings.py:

My_KEY = ""


我在另一个模块中使用这个MY_KEY

my_module.py

from settings import My_KEY


def function_a():
    MY_KEY = "abcd"


def function_b():
    function_a();
    print My_KEY


我希望在调用function_b()时在输出中看到“ abcd”,但是我怎么会得到空字符串。我完全迷路了

最佳答案

默认情况下,当在函数内部遇到赋值语句时,Python会将左侧的变量作为局部变量。

如果要在函数中修改全局变量,请使用global statement将该变量声明为全局变量:

def function_a():
    global My_KEY
    My_KEY = "abcd"


但是,最好避免从函数内部修改全局变量。从长远来看,它会使代码更难理解。您可以改用My_KEY作为function_a的返回值:

def function_a():
    My_KEY = "abcd"
    return My_KEY

def function_b():
    My_KEY = function_a()
    print My_KEY

关于python - python模块变量混淆,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18345672/

10-17 02:19