游戏测试 读《编译原理》观后感

陈子昂 for 书影评 · 2018年08月25日 · 1220 次阅读

计算机符号学 python

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:猜测"=="和"==="是于上面是另外一层意思,可能计算机科学家用了一种邻近规则。

如果拿一个盘子和菜举例子。同样一个盘子,菜摆盘了小龙虾,就是盘子的对象里面是小龙虾,中间的清洗过程就是解除引用。如果换成番茄牛腩,盘子->移除小龙虾,盘子的对象是番茄牛腩。如果倒掉这份番茄牛腩,是用手倾斜这个盘子对象。

推荐 INPLACE_*(原地处理)

a=a+1 ,右边先指向 a 的内存,a+1 后,先回收之前 a 的数值(数字小数在 python 内存里引用为 0,也是不会回收的),但是依然会有右边计算结束后,在把数值传递给左边。
虽然在中间程序优化器内操作步骤不会变多。但由小见大,不光是 int 才会有原地处理,比如钩子函数 一样会存在,钩子函数对象句柄 +=对象句柄链接引用的方法或者别的。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暫無回覆。
需要 登录 後方可回應,如果你還沒有帳號按這裡 注册