"用途"之间的含义和区别是什么?和"重新绑定"一个变量?

时间:2017-07-29 01:27:00

标签: python python-3.x terminology

从果壳中的Python:

  

Eschew global

     

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

     

仅在使用全局声明时   函数体重新绑定全局变量(通常通过赋值给变量的名称)。

"使用"之间的含义和区别是什么?和"重新绑定"变量?

是"变异绑定到变量的对象" "使用"或"重新绑定"变量?为什么呢?

2 个答案:

答案 0 :(得分:3)

“Mutate”和“bind”/“rebind”是两个相互排斥的操作。变异会更改对象,而绑定会更改名称。

这是具有约束力的:

a = []

这是变异的:

a.append(None)

“使用”表示访问绑定到名称的现有对象,无论是读取还是突变。

答案 1 :(得分:1)

使用变量

当您使用变量 时,您正在使用变量的实际值 - 它引用的对象 - 或者变量变量名称引用的对象< / EM> 即可。这是一个例子:

>>> var1 = 1
>>> var2 = [1]
>>> 
>>> def func():
    print(var1)
    var2.append(2)


>>> func()
1
>>> var2
[1, 2]
>>> 

在上面的示例中,我们var1内使用 var2func。我们使用var1,因为我们在调用print时使用了它的值。我们使用var2因为我们改变了它所引用的对象。请注意,我们没有更改var2引用的对象,我们使用已存在的对象并对其进行了修改。另请注意,我们从未尝试将 new 值分配给任一变量。

重新绑定变量

当您重新绑定变量 时,您正在更改变量名称所指的对象 。这是另一个帮助说明这一点的例子:

>>> var1 = 1
>>> 
>>> def func():
    global var1
    var1 = 2


>>> func()
>>> var1
2
>>>

在上面的例子中。我们正在var内重新绑定funcvar1用于引用对象1,但由于我们将var1重新绑定到2,它现在引用对象2

那有什么区别?

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