在Python中,如果要更改变量的值,有多种方法:
foo = 1 # By assignment
bar.func() # By calling its method.
for baz in range(5): # By "leaking" from a loop
出于好奇,我想在“正常”程序中找到实现该目标的所有方法。 “正常”是指不直接操纵locals()
或做类似的事情。
我也知道围绕Python是否具有真正的“变量”进行了一些讨论,但对于这个问题,我们不要专注于此。
答案 0 :(得分:0)
恐怕真的不清楚“更改变量的值”对您意味着什么。 Python对象具有状态,因此您可以一致地询问哪些方法可以改变对象的状态,并且可以将Python中的名称绑定到对象,因此可以一致地询问这种绑定如何更改。
对于前者,它取决于对象的类型。对于后者,请参见《 Python语言参考手册》中的4.2.1节(“名称绑定”):
以下结构绑定名称:函数的形式参数,
import
语句,类和函数定义(这些绑定在定义块中的类或函数名称)以及作为标识符的目标(如果在赋值中出现),for
循环标头,或as
语句或with
子句中except
之后。形式为import
的{{1}}语句绑定在导入模块中定义的所有名称,但下划线开头的名称除外。该表格只能在模块级别使用。在
from ... import *
语句中出现的目标也被认为是为此目的而绑定的(尽管实际的语义是要取消绑定名称)。