1

除了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

我不明白他在说什么。

4

2 回答 2

0

他的意思是说这两个变量本质上是在不知道它们的类型或像往常一样显式使用中间变量的情况下交换的。弱类型交换如下所示:

temp = A
A = B
B = temp

temp必须创建一个先前未初始化的临时变量才能执行交换。但是,因为第一次创建时没有指定类型temp,所以它违反了强类型。这是一个强类型交换:

int temp = A
A = B
B = temp

类似交换A, B = B, A不会违反强类型,因为不需要显式定义中间变量有或没有类型。它只是一个赋值操作,一个基本的赋值操作总是有歧义的类型(又名:A = B无论你使用的是强类型语言还是弱类型语言,都是一样的)。

于 2013-09-06T03:43:06.927 回答
0

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

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

2.创建变量a

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

在你的情况下,声明

myvar, mystring = mystring, myvar

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

于 2013-09-06T03:50:42.797 回答