首页 > 解决方案 > How many ways are there to change a variable's value?

问题描述

In Python, if you want to change a variable's value, there are multiple ways:

foo = 1               # By assignment
bar.func()            # By calling its method.
for baz in range(5):  # By "leaking" from a loop

Just out of curiosity, I want to find every way to achieve this goal in a "normal" program. By "normal" I mean not directly manipulating locals() or do similar things.

Also I know there's some discussion around whether Python has real "variable", but let's not focus on that for this question.

标签: pythonvariables

解决方案


恐怕真的不清楚“更改变量的值”对您意味着什么。Python 对象具有状态,因此您可以连贯地询问哪些方法可能会改变对象的状态,并且 Python 中的名称可以绑定到对象,因此您可以连贯地询问此类绑定如何更改。

对于前者,这取决于对象的类型。对于后者,请参阅 Python 语言参考手册中的第 4.2.1 节(“名称绑定”):

以下构造绑定名称:函数、import语句、类和函数定义的形式参数(这些在定义块中绑定类或函数名称),以及如果出现在赋值、for循环头或语句之后as作为标识符的目标withexcept子句。形式的import语句from ... import *绑定在导入模块中定义的所有名称,以下划线开头的名称除外。此表格只能在模块级别使用。

语句中出现的目标del也被认为是为此目的绑定的(尽管实际语义是取消绑定名称)。


推荐阅读