【问题标题】:what's the difference between assign and bound when talking about variable?谈论变量时,assign和bound有什么区别?
【发布时间】:2013-09-06 03:35:32
【问题描述】:
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
我不明白他的意思。
【问题讨论】:
标签:
python
variables
assign
【解决方案1】:
他的意思是说这两个变量是本质上交换的,而不知道它们的类型或像往常一样显式地使用中间变量。弱类型交换如下所示:
temp = A
A = B
B = temp
必须创建一个先前未初始化的临时变量temp 才能执行交换。但是,因为在第一次创建 temp 时没有指定类型,所以它违反了强类型。这是一个强类型交换:
int temp = A
A = B
B = temp
像A, B = B, A 这样的交换不会违反强类型,因为不需要显式定义中间变量有或没有类型。它只是一个赋值操作,基本的赋值操作总是有歧义的类型(又名:A = B 是相同的,无论您使用的是强类型语言还是弱类型语言)。
【解决方案2】:
像 a=1 这样的赋值,从概念上讲,Python 将执行三个不同的步骤来执行请求。
1.创建一个对象来表示值1
2.创建变量a。
3.链接(或在链接中绑定)变量a 到新对象1。
在你的情况下,声明
myvar, mystring = mystring, myvar
会改变变量-对象的绑定关系。