关于Python链式赋值的赋值顺序问题
2024-08-28 05:45:03
在《第4.7节 Python特色的序列解包、链式赋值、链式比较》一文中,老猿这样介绍的:
链式赋值是用一行语句将多个变量赋值为同一个值,语法如下:
变量1=变量2=变量n=赋值表达式
该语法实际执行效果类似于:
变量n=赋值表达式
变量2=变量n
变量1=变量2
有CSDN的博友Johnny592友情指出老猿这种解释错了,正确的应该是“ a=b=c=1 顺序是:a=1,b=a,c=a,有顺序”,老猿仔细验证了一下,证明Johnny592说得是正确的,证明过程如下:
>>> k,l=0,[10,20,30,40]
>>> k=l[k]=3
>>> l #下面的结果显示l[3]=3,说明k先被赋值为3,才有l[3]赋值为3
[10, 20, 30, 3]
>>>
>>>> k,l=0,[10,20,30,40]
>>> k=l[k]=l[l[k]-1]=3
>>> l #跟上面结果对比表明:l[k]-1=2,说明l[k]比l[l[k]-1]先执行赋值
[10, 20, 3, 3]
>>>
从上述案例执行结果可以看出,l[k]中的k是3,因此是k先赋值为3,再执行的l[k]的赋值。也就是说链式赋值是从左到右的顺序执行赋值的。
再次感谢Johnny592博友!!
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!
最新文章
- Be Better:遇见更好的自己-2016年记
- 百度UEditor在线编辑器的配置和图片上传
- linux内核中的每cpu变量
- 关于STM8空间不足的解决方法
- sql注入实例分析
- [转]设计模式(22)-Strategy Pattern
- Cent OS 6 主机名设置
- iOS开展UI一片—简单的浏览器观看节目
- LINQ to SQL的一些简单用法
- svn代码统计工具的金额
- Spring(一)之IOC、bean、注入
- 理解SSL/TLS协议
- 论文阅读——Visual inertial odometry using coupled nonlinear optimization
- [Codeforces 961G]Partitions
- 关于setTimeout和setInterval的函数参数问题
- 崩 oj 1768 最大子矩阵
- 【UI测试】--帮助设施
- Nginx性能优化功能- Gzip压缩(大幅度提高页面加载速度)
- 将windows控制台内容输出到文件中
- Java 实现对文件系统的监控