为了账号安全,请及时绑定邮箱和手机立即绑定

Python局部变量更改

Python局部变量更改

慕码人8056858 2021-04-09 13:15:06
我本质上想要的是一个辅助函数(可以在类的外部,也可以使用),以更改函数中声明的局部变量的值。class MainClass:    def importantFunction():        truthValue1 = False        truthValue2 = False        change(truthValue1,truthValue2)        return truthValue1 && truthValue2def changeBoolValue(val1,val2):val1 = not val1val2 = not val2我想借助外部函数来更改trueValue1和trueValue2的值。我尝试过将其移到类中并使用不起作用的self,但我确实希望不要将trueValue1,2全局设置为该类。我该如何处理?谢谢
查看完整描述

3 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

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


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]


查看完整回答
反对 回复 2021-04-27
?
临摹微笑

TA贡献1982条经验 获得超2个赞

您可以重新分配名称:


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()


查看完整回答
反对 回复 2021-04-27
?
www说

TA贡献1775条经验 获得超8个赞

布尔值是Python中的不可变类型,因此您不能通过引用传递它。考虑将其包装在@Andrej Kesely的答案之类的列表(可变类型)中,或使用return。


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


查看完整回答
反对 回复 2021-04-27
  • 3 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信