在函数内部定义的 global 关键字不会更新我的变量,但为什么呢?

问题描述

为什么 func3 的输出仍然是 'Hello' 而不是 'New Message'?由于 func2 被告知将全局变量“update”的值更改为传递给 func1 的参数?我很困惑。

update = 'Hello'

def func1(message):
    func2(message)

def func2(message):
    global update
    update = message
    func3()

def func3(update = update):
    print(update)
    
    
    
func1('New Message')

解决方法

当您不带参数调用 func3 时,它会使用默认值计算 func3。默认值为“你好”。 因此,您需要使用更新的新值调用 func3,如下所示:

time