首页 > 解决方案 > 如何翻转嵌套函数中的布尔值

问题描述

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

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]

我很好奇为什么会发生这种情况。我想这应该与一些可变性有关。谢谢!

标签: pythonlistbooleannested-function

解决方案


x您正在修改不是isChange此函数中的本地值:

def change(x):
    x = [False]

您需要返回所需的值:

def change(x):
    return [False]

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

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

然后,printChange您需要将返回值分配给isChange

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

推荐阅读