print('Hello World')
首先编译上述代码时,字节代码是否包含print
函数的源代码? Python解释器如何获取print
的源代码?
您可以使用dis
模块来查看CPython如何处理内置函数。
$ cat tmp.py
print('Hello World')
$ python3 -m dis tmp.py
1 0 LOAD_NAME 0 (print)
2 LOAD_CONST 0 ('Hello World')
4 CALL_FUNCTION 1
6 POP_TOP
8 LOAD_CONST 1 (None)
10 RETURN_VALUE
函数的名称及其参数被加载到堆栈上,然后CALL_FUNCTION
负责使用常规查找算法查找名称。对于print
,名称存在于内置作用域中,并且查找的结果是Python实现提供的对象。