a , b = b , a + b
这个是不是等价于
a = b
b = a + b
测试起来好像不是,那是怎么解释的? 是求斐波那契函数中的:
def fab(max):
n,a,b = 0,0,1
while n < max:
print b
a , b = b , a+b
n = n + 1
a , b = b , a + b
这个是不是等价于
a = b
b = a + b
测试起来好像不是,那是怎么解释的? 是求斐波那契函数中的:
def fab(max):
n,a,b = 0,0,1
while n < max:
print b
a , b = b , a+b
n = n + 1
不等价
a , b = b , a + b
中后面a+b
中的a
还是原来的a
,不是把b
的值赋值给a
之后的a
。
和
a = b
b = a + b
不同。
a, b = x, y
属于奇技淫巧,少打几个字,但是有坑。
python 的
a, b = b, a
和以下代码
tmp = a
a = b
b = tmp + b
是不一样的实现。
在 python 里一切皆对象,等号右边其实是省略了括号的tuple
,因此上述代码应该如此理解:
a, b = (b, a)
(b, a)
是一个新生成的 tuple 对象, tuple可以进行特殊赋值,将里面的元素赋值给多个变量, 从而实现了a, b 的交换。
因此,这也就是为什么a , b = b , a + b
后面a+b
中的a
还是原来的a
的原因。
3 回答3.1k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
4 回答1.9k 阅读
3 回答1.7k 阅读
1 回答1.4k 阅读✓ 已解决
相当于
少使用了存储单元tmp