Python局部变量更改

我本质上想要的是一个辅助函数(可以在类的外部,也可以使用),以更改函数中声明的局部变量的值。


class MainClass:

    def importantFunction():

        truthValue1 = False

        truthValue2 = False

        change(truthValue1,truthValue2)

        return truthValue1 && truthValue2


def changeBoolValue(val1,val2):

val1 = not val1

val2 = not val2

我想借助外部函数来更改trueValue1和trueValue2的值。我尝试过将其移到类中并使用不起作用的self,但我确实希望不要将trueValue1,2全局设置为该类。我该如何处理?谢谢


慕码人8056858
浏览 159回答 3
3回答

慕雪6442864

要更改值,您需要在列表中传递它们,例如: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()

www说

布尔值是Python中的不可变类型,因此您不能通过引用传递它。考虑将其包装在@Andrej Kesely的答案之类的列表(可变类型)中,或使用return。class MainClass:    def importantFunction():        truthValue1 = False        truthValue2 = False        truthValue1, truthValue2 = changeBoolValue(truthValue1, truthValue2)        return truthValue1 && truthValue2def changeBoolValue(val1, val2):    return not val1, not val2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python