def test_while(): #简单测试代码
a = 0
while True:
a =a+1 #INPLACE_ADD原地 效率高于BINARY_ADD
if a == 100000: #先把a提取出来,然后拿到后面数字100000,然后符号用==连接,然后判断是不是等于False,所以条件判断里面优先写条件取反
break
这里 a“=” 0, "="做为一个连接器的作用,为赋值链接器。在大部分语言里都是这样的,把左右进行连接(python 语言里是把右边数据类型的值绑在左边对象句柄上,python 语言对象句柄是来源于右边),所以赋值链接器优先级是右边先处理,然后给到左边。
ps:猜测"=="和"==="是于上面是另外一层意思,可能计算机科学家用了一种邻近规则。
如果拿一个盘子和菜举例子。同样一个盘子,菜摆盘了小龙虾,就是盘子的对象里面是小龙虾,中间的清洗过程就是解除引用。如果换成番茄牛腩,盘子->移除小龙虾,盘子的对象是番茄牛腩。如果倒掉这份番茄牛腩,是用手倾斜这个盘子对象。
a=a+1 ,右边先指向 a 的内存,a+1 后,先回收之前 a 的数值(数字小数在 python 内存里引用为 0,也是不会回收的),但是依然会有右边计算结束后,在把数值传递给左边。
虽然在中间程序优化器内操作步骤不会变多。但由小见大,不光是 int 才会有原地处理,比如钩子函数 一样会存在,钩子函数对象句柄 +=对象句柄链接引用的方法或者别的。