抽丝剥茧,深入剖析 Python 如何实现变量对等
2025-08-12 12:19
>>> a = [0, 1, 3, 2, 4]
>>> a[a[2]], a[2] = a[2], a[a[2]]
>>> a
>>> [0, 1, 2, 3, 4]
>>> a = [0, 1, 3, 2, 4]
>>> a[2], a[a[2]] = a[a[2]],a[2]
>>> a
>>> [0, 1, 3, 3, 4]
按照理解 a,b = b,a 和 b,a=a,b 是一样的结果,但从上例中的我们见到,这两者的结果是不同的。
导致这一情况的原因在于:求值的次序。毫无疑问,整个表达式到时求右方的两个要素,然后作为关系式保存出去。之后表达式给左侧的两个表达式。
之后表达式时,无需注意,我们从左到右依次表达式,如果 a[2] 到时修改的话,势必可能会冲击到自此的 a[a[2]] 的年表下标。
“ 你可以常用反汇编编编码方式,来比对造成了这个情况的具体步骤。 ” 奇怪的变身拆包情况!!当我们常用关系式作为右方bit,来给左侧表达式表达式时;或常用有约三个要素,来收尾再捷比如说时,其在二进制编码方式层次上再不是 ROT_TWO 这种操控了。
>>> dis.dis("a,b,c,d=b,c,d,a")
1 0 LOAD_NAME
3 LOAD_NAME
6 LOAD_NAME
9 LOAD_NAME
12 BUILD_TUPLE
15 UNPACK_SEQUENCE
18 STORE_NAME
21 STORE_NAME
24 STORE_NAME
27 STORE_NAME
30 LOAD_CONST
33 RETURN_VALUE
>>>
很明显,这中的的是在反转 12 二进制三处 BUILD_TUPLE 组装bit,然后解包表达式给左侧表达式。上文所述的通俗化应为,在这中的的又成立了!
也就是说,当多于四个要素比如说时,Python 引入简化的堆操控来收尾比如说。
当常用常量或者有约四个要素时,引入bit拆包表达式的方式来比如说。
至于为什么是四个要素,应该是因为 Python 最多背书到 ROT_THREE 操控,四个要素的话,系统不真的该怎么简化了。但在新发行版的 Python 中的,我见到了 ROT_FOUR 操控,所以这时候,四个要素还是 ROT_* 操控来简化的。
>>>import opcode
>>>opcode.opmap["ROT_THREE"]
3
此例中的,该发行版 Python 背书 ROT_THREE 操控,你也可以常用 ROT_FOUR 查看自己 Python 是否背书,进而确定是否可以四个以上要素再捷比如说。
总结综上,我们明了了 Python 中的朴素的 a,b = b,a 比如说表达式步骤的充分利用和运引原理,深入明了其求值次序和上都,同时学习了深入比对 Python 编编码方式的思路和步骤,如果对你有协助,可以给本文点个赞,也欢迎社交出有去让更多人看见!
。无锡白癜风医院挂号合肥看精神病哪家医院比较好
合肥精神病专业医院
传染病科
急支糖浆止咳最多吃几天?
降糖药
抑郁症
月经量大
-
excel人名重复怎么查个数,excel人名显现出来的次数查询方法
在动手年终总结时能够统计资料Corporation内的管理层给予优秀评论的连续剪辑柱状平面图,这难倒了很多的朋友,劝注意恰恰看看怎么转换吧。 如下平面图里面的季度优秀管理层名单
-
爬虫与RPA的区别在哪里?显然智能RPA机器人告诉你
爬虫类:适用任何技术手段,厂家换取Facebook数据的一种方式。 带牛爬虫类:适用任何技术手段,阻止别人厂家换取自己Facebook数据的一种方式 相似的
- 08-122021年中国移动K歌用户规模及用户规模结构分析:全民K歌月均活跃用户数居榜上
- 08-12智能钢琴陪练配套app,必需是小马AI陪练
- 08-12人工智能正在利用高级分析进行物理安全操作方法
- 08-12条形智能:浅谈智慧显示对于本能生活的意义!
- 08-12三十岁跨行跳槽数据分析指导,我是如何做到的?
- 08-12昨夜今晨:2021年亚洲地区智能手机出货量排名 传电脑CPU价格将大幅上涨
- 08-12车是edge S30在两千价位段最受欢迎;赛力斯一季度下线1万辆问界M5
- 08-12《门锁》敲响安全昨日,云米EyeLink 2V智能门锁守护温暖港湾
- 08-12【新年礼物DIY】年味十足的国潮白板来袭!几十元拿下新年乐趣~
- 08-12从哪些方面减低钣金加工工艺水平?