关于Python链式赋值的赋值顺序问题
Python 关于 顺序 赋值 链式 问题
2023-09-27 14:26:59 时间
在《第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博友!!
再次订正:
经博友“码哥yoo_____”提醒,上面博文内容的说法还是有问题,正取的说法应该是:
a=b=c=d
赋值处理过程如下:
temp = d
a = temp
b=temp
c=temp
感谢博友“码哥yoo_____”提醒!
具体证明方式请参考《Python链式赋值执行顺序及执行方式的证明》。
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!
相关文章
- 关于Python自动化的就业真相
- 关于python中数组的问题,序列格式转换
- 关于python的二维数组
- 关于python的冒号截取
- Python traceback模块的使用(抛异常、报错、输出错误)
- “毕业1年,搞Python赚了50万!”网友:带我学...
- Python零基础入门,2分钟带你了解python
- 小白如何入门 Python 爬虫?
- Python:关于Python数据类型这里划重点啦
- python stmplib与email模块邮箱详解
- 谁会拒绝一篇关于【python装饰器】的友情分享呢~
- python关于error: invalid command ‘bdist_wheel报错的解决
- python:关于py文件之间相互import的问题
- 【Python】数据入库出库处理/list列表/数组/转字符串
- 【Python】【Pycharm】+跳转
- ArcGIS ArcMap 与 ArcServer关于Python的冲突
- python 关于GUI的思考(转)
- python之获取微信服务器的ip地址
- 关于python当中的@修饰符的浅析
- 《树莓派Python编程入门与实战》——3.6 关于Python开发环境shell
- 《树莓派Python编程入门与实战》——3.9 总结
- 《树莓派Python编程入门与实战(第2版)》——3.5 关于Python交互式shell
- 《趣学Python——教孩子学编程》——第1部分 学习编程 第1章 Python不是大蟒蛇 1.1 关于计算机语言
- 《Python游戏编程入门》——1.2 初识Python
- 《树莓派Python编程入门与实战》——3.6 关于Python开发环境shell
- Python代码库OpenCV之08图像过滤blur(含代码)
- 关于《Python自动化测试实战》
- python【一行代码】生成个性二维码
- 华为OD机试 - 水仙花数(Python) | 机试题+算法思路+考点+代码解析 【2023】
- python判断操作系统类型
- python:关于py文件之间相互import的问题
- Python之关于工具包简介
- Python写安全小工具-TCP全连接端口扫描器
- [Python] 字符串操作及方法总结