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
我不明白他的观点。
答案 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
将更改变量对象绑定关系。