Python 简述:
“使用”和“重新绑定”变量的含义和区别是什么?避开全球
如果函数体只使用全局变量,则永远不要使用全局变量 变量(包括改变绑定到该变量的对象 变量,当对象是可变的时)。
仅在以下情况下才使用全局语句:函数体重新绑定全局变量(通常通过分配给变量的名称)。
“改变绑定到变量的对象”是“使用”还是“重新绑定”变量?为什么?
此具有约束力:
a = []
这是变异:
a.append(None)
“使用”意味着访问绑定到名称的现有对象,无论是为了读取还是为了突变。
使用变量时,您正在使用该变量的实际值(它引用的对象)或改变变量名称引用的对象。这是一个例子:
>>> var1 = 1
>>> var2 = [1]
>>>
>>> def func():
print(var1)
var2.append(2)
>>> func()
1
>>> var2
[1, 2]
>>>
在上面的示例中,我们在var1
内部使用
var2
和func
。我们使用 var1
是因为我们在调用 print
时使用了它的值。我们使用 var2
是因为我们改变了它所引用的对象。请注意,我们没有更改 var2
引用的对象,我们使用已经存在的对象并修改了它。另请注意,我们从未尝试为任一变量分配 new 值。 重新绑定变量
变量时,您正在更改变量名称所引用的对象。这是另一个例子来帮助说明这一点:
>>> var1 = 1
>>>
>>> def func():
global var1
var1 = 2
>>> func()
>>> var1
2
>>>
在上面的例子中。我们正在将
var
重新绑定到
func
内部。 var1
过去用于引用对象 1
,但因为我们将 var1
重新绑定到 2
,所以它现在引用对象 2
。那么有什么区别?