逐行解释和整体解释
最近在学习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解释器就会把一行当作一个编译单元来编译到字节码并解释执行;

浙公网安备 33010602011771号