逐行解释和整体解释

     最近在学习JavaScript的时候,知道这是一个脚本语言,逐行进行解释和编码,和python中的交互模式一样,于是我就在想逐行解释和整体解释有什么区别和联系。

在找网上解释的时候,突然发现解释结果和我上一篇写过的博客python中不用自增自减内容相似,并且有了进一步理解。

  • 话不多说,先上代码看下:

(1)代码1

a = 10
print(id(a)) # id()函数查看变量存储的地址

def demo1():
b = 10
print(id(b))

输出结果如下:

 

 可以看出在函数外的变量地址和函数里的变量地址一样(两个变量的值一样)

(2)代码2

c = 25555
print(id(c))

def demo2():
    d = 25555
    print(id(d))

demo2()

输出结果如下:

 

  可以看出在函数外的变量地址和函数里的变量地址不一样(两个变量的值一样)

  • 分析

1、代码1和代码2为什么会有这么大的区别呢?

(1)在同一个编译单元(PyFunctionObject)里出现的值相同的常量,只会在常量池里出现一份;

(2)在不同的编译单元中,值相同的常量一般都不会对应到同一个对象(因此存储地址也不一样),但是(小整数对象池-5~256之间的数在不同的编译单元里,值相同的常量会对应到同一个对象)。

2、逐行解释

(1)逐行解释:Python解释器就会把一行当作一个编译单元来编译到字节码并解释执行;

 

 参考链接:逐行解释和整体解释的理解 - 凯哥吧 - 博客园 (cnblogs.com)

posted @ 2021-09-11 09:52  GarethYu  阅读(404)  评论(0)    收藏  举报