a, b = b, a + b,运行机制

__phoenix 2014-06-03 10:26:09
rt,按c语言的话,必须使用一个临时变量

tmp = a + b
a = b
b = tmp

python中如何运行,求解释
...全文
211 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
iasky 2014-06-04
  • 打赏
  • 举报
回复
python是是赋值给tuple,分别设置 a和b
ImN1 2014-06-03
  • 打赏
  • 举报
回复
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回收 我的理解是这样,不知道有没有错
The_Third_Wave 2014-06-03
  • 打赏
  • 举报
回复
>>> 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
>>> 
The_Third_Wave 2014-06-03
  • 打赏
  • 举报
回复
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
>>> 
这样你该明白了吧?
dbzhang800 2014-06-03
  • 打赏
  • 举报
回复
python中这个就是 c = b, a + b a, b = c

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧