
看起来像Python在内部交换项目。检查这个程序
a, b = [1, 2], [2, 3]def func(): a, b = b, aimport disdis.dis(func)
输出量
40 LOAD_FAST 0 (b) 3 LOAD_FAST 1 (a) 6 ROT_TWO 7 STORE_FAST 1 (a) 10 STORE_FAST 0 (b) 13 LOAD_ConST 0 (None) 16 RETURN_VALUE
因此,Python的推动 引用
从
b和
a在堆栈
LOAD_FAST。因此,现在最上面的元素是所指向的引用
a,下一个是所指向的引用
b。然后,它用于
ROT_TWO交换堆栈的前两个元素。所以,现在,最顶部的元件是由指向的参考
b和下一个是基准指出通过
a,然后将堆叠的两个元素分配顶部
a和
b分别与
STORE_FAST。
当我们处理的项目数小于4时,这就是在赋值语句中进行排序的方式。
如果项目数大于或等于4 ,它将构建一个元组并解压值。检查这个程序
a, b, c, d = [1, 2], [2, 3], [4, 5], [5, 6]def func(): a, b, c, d = d, c, b, aimport disdis.dis(func)
输出量
40 LOAD_FAST 0 (d) 3 LOAD_FAST 1 (c) 6 LOAD_FAST 2 (b) 9 LOAD_FAST 3 (a) 12 BUILD_TUPLE 4 15 UNPACK_SEQUENCE 4 18 STORE_FAST 3 (a) 21 STORE_FAST 2 (b) 24 STORE_FAST 1 (c) 27 STORE_FAST 0 (d) 30 LOAD_ConST 0 (None) 33 RETURN_VALUE
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)