Python 编译和链接的过程是什么
编译 − Python中的源代码被保存为.py文件,然后被编译成称为字节码的格式,字节码再转换为机器码。编译完成后,代码被存储在.pyc文件中,并且在源代码更新时重新生成。这个过程被称为编译。
链接 − 链接是最后阶段,所有的函数被链接到它们的定义上,因为链接器知道这些函数都在哪里实现的。这个过程被称为链接。
注意 − Python程序既可以编译也可以解释,但编译部分对程序员是隐藏的。因此,我们通常说Python是一种解释型语言,原因就在于此。
让我们来看一个示例。对于我们的示例,我们将使用Python中的dis模块。
安装和导入dis模块
要安装dis模块,请使用pip命令 −
pip install dis
导入dis模块−
import dis
示例
我们现在来看一个示例
import dis
# Function to return the sum of recursive numbers
def recursive_sum(n):
if n <= 1:
return n
else:
return n + recursive_sum(n-1)
# change this value for a different result
number = 16
if number < 0:
print("The sum = ",recursive_sum(number))
# By using dis module, the bytecode is loaded into machine code, and a piece of code that reads each instruction in the bytecode and executes whatever operation is indicated.
dis.dis(recursive_sum)
输出
5 0 LOAD_FAST 0 (n)
2 LOAD_CONST 1 (1)
4 COMPARE_OP 1 (<=)
6 POP_JUMP_IF_FALSE 12
6 8 LOAD_FAST 0 (n)
10 RETURN_VALUE
8 >> 12 LOAD_FAST 0 (n)
14 LOAD_GLOBAL 0 (recursive_sum)
16 LOAD_FAST 0 (n)
18 LOAD_CONST 1 (1)
20 BINARY_SUBTRACT
22 CALL_FUNCTION 1
24 BINARY_ADD
26 RETURN_VALUE
28 LOAD_CONST 0 (None)
30 RETURN_VALUE