Python局部变量chang

2024-04-18 22:03:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我本质上想要的是一个helper函数(在我们的类内部或类外部,任何可以工作的函数),以便更改函数中声明的局部变量的值。你知道吗

class MainClass:
    def importantFunction():
        truthValue1 = False
        truthValue2 = False
        change(truthValue1,truthValue2)
        return truthValue1 && truthValue2

def changeBoolValue(val1,val2):
val1 = not val1
val2 = not val2

我想在外部函数的帮助下改变truthValue1和truthValue2的值。我试着把它移到类中,并使用self,但这不起作用,我真的不想让truthValue1,2成为类的全局值。我该怎么办?谢谢


Tags: 函数helperfalse声明defnotclass局部变量
3条回答

在Python中,boolean是不可变的类型,因此不能通过引用传递它。考虑将其包装在一个列表(一个可变类型)中,比如@Andrej Kesely的答案,或者使用returns。你知道吗

class MainClass:
    def importantFunction():
        truthValue1 = False
        truthValue2 = False
        truthValue1, truthValue2 = changeBoolValue(truthValue1, truthValue2)
        return truthValue1 && truthValue2

def changeBoolValue(val1, val2):
    return not val1, not val2

要更改值,需要在列表中传递它们,例如:

class MainClass:
    def importantFunction(self):  # don't forget self
        truthValues = [False, False]
        changeBoolValue(truthValues)
        return truthValues[0] and truthValues[1]   # using `and`, not `&&`

def changeBoolValue(val):
    val[0] = not val[0]
    val[1] = not val[1]

您可以重新分配名称:

truthValue1, truthValue2 = change(truthValue1, truthValue2)

def change(val1, val2):
    val1 = not val1
    val2 = not val2
    return val1, val2

最好以某种方式封装:

class Truth:
    def __init__(self):
        self.val1 = False
        self.val2 = False

    def change(self):
        self.val1 = not self.val1
        self.val2 = not self.val2

然后:

truth = Truth()
truth.change()

相关问题 更多 >