如何翻转嵌套函数中的布尔值

How to flip the boolean value in a nested function

我对翻转布尔值有疑问。我想在另一个函数中进行翻转。代码与此类似:

def printChange():
    isChange = [True]
    change(isChange)
    print(isChange)

def change(x):
    x = [False]

printChange() # [True]

如果我这样修改更改函数:

def printChange():
    isChange = [True]
    change(isChange)
    print(isChange)

def change(x):
    x[0] = False

printChange() #[False]

我很好奇为什么会这样。我想这应该与一些可变性有关。谢谢!

您正在修改本地值 x 而不是 isChange 这个函数:

def change(x):
    x = [False]

您需要return所需的值:

def change(x):
    return [False]

或者如果你想翻转值更好:

def change(x):
    return [not x[0]]

然后在printChange中你需要将return值赋值给isChange:

def printChange():
    isChange = [True]
    isChange = change(isChange)
    print(isChange)