“使用”和“重新绑定”变量的含义和区别是什么?

问题描述 投票:0回答:2

Python 简述:

避开全球

如果函数体只使用全局变量,则永远不要使用全局变量 变量(包括改变绑定到该变量的对象 变量,当对象是可变的时)。

仅在以下情况下才使用全局语句:

函数体重新绑定全局变量(通常通过分配给变量的名称)。

“使用”和“重新绑定”变量的含义和区别是什么?

“改变绑定到变量的对象”是“使用”还是“重新绑定”变量?为什么?

python python-3.x terminology
2个回答
4
投票
“Mutate”和“bind”/“rebind”是两个互斥的操作。变异会改变对象,而绑定会改变名称。

此具有约束力:

a = []

这是变异:

a.append(None)

“使用”意味着访问绑定到名称的现有对象,无论是为了读取还是为了突变。


2
投票
使用变量

当您

使用变量时,您正在使用该变量的实际值(它引用的对象)或改变变量名称引用的对象。这是一个例子:

>>> 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
那么有什么区别?

不同之处在于,当我们使用变量时,我们只是使用变量已经引用的对象。当我们重新绑定变量时,我们更改了该变量引用的对象。

© www.soinside.com 2019 - 2024. All rights reserved.