a, b = b, a + b,运行机制解决方案
a, b = b, a + b,运行机制
rt,按c语言的话,必须使用一个临时变量
python中如何运行,求解释
------解决方案--------------------
a, b = b, a + b
右边运算结果保存为1个tuple, 而a, b = b, a + b 意思是a, b分别取这个tuple中的第0个第1个值
这样你该明白了吧?
------解决方案--------------------
------解决方案--------------------
a指向内存空间1,引用计数器加1
b指向内存空间2,引用计数器加1
(b, a+b)指向内存空间3,b不变,a+b指向内存空间4
赋值的同时(a,b)指向内存空间3,a指向内存空间2,b指向内存空间4
最后,内存空间1和内存空间3没有任何变量指向,引用计数器减1为0,空间由python回收
我的理解是这样,不知道有没有错
------解决方案--------------------
python是是赋值给tuple,分别设置 a和b
rt,按c语言的话,必须使用一个临时变量
tmp = a + b
a = b
b = tmp
python中如何运行,求解释
------解决方案--------------------
a, b = b, a + b
右边运算结果保存为1个tuple, 而a, b = b, a + b 意思是a, b分别取这个tuple中的第0个第1个值
>>> a = 1
>>> b = 1
>>> c = a , a + b
>>> c
(1, 2)
>>> a, b = a , a + b
>>> a
1
>>> b
2
>>> a = a , a + b
>>> a
(1, 3)
>>> a, b, c = a , a + b
Traceback (most recent call last):
File "<pyshell#67>", line 1, in <module>
a, b, c = a , a + b
TypeError: can only concatenate tuple (not "int") to tuple
>>>
这样你该明白了吧?
------解决方案--------------------
>>> a = 1
>>> b = 1
>>> a, b, d = a , a + b
Traceback (most recent call last):
File "<pyshell#70>", line 1, in <module>
a, b, d = a , a + b
ValueError: need more than 2 values to unpack
>>>
------解决方案--------------------
a指向内存空间1,引用计数器加1
b指向内存空间2,引用计数器加1
(b, a+b)指向内存空间3,b不变,a+b指向内存空间4
赋值的同时(a,b)指向内存空间3,a指向内存空间2,b指向内存空间4
最后,内存空间1和内存空间3没有任何变量指向,引用计数器减1为0,空间由python回收
我的理解是这样,不知道有没有错
------解决方案--------------------
python是是赋值给tuple,分别设置 a和b