python - 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.
解决方案
恐怕真的不清楚“更改变量的值”对您意味着什么。Python 对象具有状态,因此您可以连贯地询问哪些方法可能会改变对象的状态,并且 Python 中的名称可以绑定到对象,因此您可以连贯地询问此类绑定如何更改。
对于前者,这取决于对象的类型。对于后者,请参阅 Python 语言参考手册中的第 4.2.1 节(“名称绑定”):
以下构造绑定名称:函数、
import
语句、类和函数定义的形式参数(这些在定义块中绑定类或函数名称),以及如果出现在赋值、for
循环头或语句之后as
作为标识符的目标with
或except
子句。形式的import
语句from ... import *
绑定在导入模块中定义的所有名称,以下划线开头的名称除外。此表格只能在模块级别使用。语句中出现的目标
del
也被认为是为此目的绑定的(尽管实际语义是取消绑定名称)。
推荐阅读
- c# - 在 c# 中的 datetimepicker 中设置 MinValue
- git - 如何为三个不同的客户构建一个 Git 存储库
- angular - 如何使用响应式表单禁用 ng-select?
- powershell - 您如何提取事件和 ServiceRequest 的“由用户创建”属性?
- javascript - jQuery无法获取数据属性,返回未定义
- c++ - GCC和Clang中的模板类如何继承子类
- c# - 如何在我的 BackgroundWorker 完成之前删除 SynchronizationContext?
- android - 使用颤振 wifi 包获取类型错误
- java - java - 如何在java中的放心测试中通过标头
- unit-testing - 如何用 Sinon 解决 NodeJS 的内置函数?