在谈论变量时,赋值和绑定有什么区别?

时间:2013-09-06 03:35:33

标签: python variables assign

http://www.stavros.io/tutorials/python/

除外
# This swaps the variables in one line(!).
# It doesn't violate strong typing because values aren't
# actually being assigned, but new objects are bound to
# the old names.
>>> myvar, mystring = mystring, myvar

我不明白他的观点。

2 个答案:

答案 0 :(得分:0)

他的意思是说两个变量基本上是交换而不知道它们的类型或者像往常一样明确地使用中间变量。弱类型交换看起来像这样:

temp = A
A = B
B = temp

必须创建先前单元化的临时变量temp才能执行交换。但是,由于首次创建temp时未指定类型,因此违反了强类型。这是一个强类型交换:

int temp = A
A = B
B = temp

A, B = B, A这样的交换不违反强类型,因为不需要使用或不使用类型显式定义中间变量。它只是一个赋值操作,并且基本的赋值操作总是模糊地键入(aka:A = B是相同的,无论您使用的是强类型语言还是弱类型语言。)

答案 1 :(得分:0)

a=1这样的赋值,概念上Python将执行三个不同的步骤来执行请求。

1.创建一个对象来表示值1

2.创建变量a

3.链接(或在链接中绑定)变量a到新对象1

在您的情况下,声明

myvar, mystring = mystring, myvar

将更改变量对象绑定关系。