Python =运算符如何来理解,python运算符,a , b = b ,
Python =运算符如何来理解,python运算符,a , b = b ,
a , b = b , a + b
这个是不是等价于
a = bb = a + b
测试起来好像不是,那是怎么解释的? 是求斐波那契函数中的:
def fab(max): n,a,b = 0,0,1 while n < max: print b a , b = b , a+b n = n + 1
python 的
a, b = b, a
和以下代码
tmp = aa = bb = tmp + b
是不一样的实现。
在 python 里一切皆对象,等号右边其实是省略了括号的tuple,因此上述代码应该如此理解:
a, b = (b, a)
(b, a) 是一个新生成的 tuple 对象, tuple可以进行特殊赋值,将里面的元素赋值给多个变量, 从而实现了a, b 的交换。
因此,这也就是为什么a , b = b , a + b 后面a+b中的a 还是原来的a的原因。
不等价
a , b = b , a + b
中后面a+b中的a还是原来的a,不是把b的值赋值给a之后的a。
和
a = bb = a + b
不同。
a, b = x, y
属于奇技淫巧,少打几个字,但是有坑。
a , b = b , a + b
相当于
tmp = aa = bb = tmp + b
少使用了存储单元tmp
楼主在看python高级编程把...今天我也开始刷这本书了.发现了这个问题.突然想到了有这麽一个帖子.收藏了.
编橙之家文章,
相关内容
- 请问Python金融方面的计算工具使用什么轮子好,python轮
- Flask sqlalchemy插入数据正常却不能正常读取什么原因,
- Python从mongodb数据查找数据那个快,pythonmongodb查找,有一
- Python语言中self参数应该如何理解,python语言self参数,为
- Python正则匹配问题求高手帮忙,python高手帮忙,这个正则
- Python分解质因数脚本源码纠错求助,python脚本源码,
- 股票与python的应用问题,提取csv制定时间段的数据内容,
- xadmin成功安装后django报错:Apps aren't loaded yet是什么原因
- Python下列表创建字典怎么实现,python列表创建字典,简单
- 实现win7查找指定程序安装目录的python方法,win7python,先
评论关闭