在CPython的基于堆栈的字节码执行引擎中,
b为链式比较保存额外的引用并不是免费的。它处于“严重的,不用担心”的便宜水平,但是它并不是真正的免费,并且您正在将其与装载局部变量的便宜一些的 *** 作进行比较。
该
COMPARE_OP*** 作码删除它从栈中比较的对象,所以链式比较,Python有创造的又一个引用
b(
DUP_TOP)和它推两个地倒在栈(
ROT_THREE)把它弄出来的方式。
在中
a <= b and b <=c,Python只是复制另一个引用到
b堆栈框架的
fastlocals数组中,而不是上面的引用改组。这涉及较少的指针改组和字节码评估循环的行程,因此便宜一些。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)