首页 > 解决方案 > python如何处理内置函数?

问题描述

print('Hello World')

上面的代码第一次编译时,字节码中是否包含print函数的源代码?Python解释器如何获取源代码print

标签: pythonfunctionbytecode

解决方案


您可以使用该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 实现提供的对象。

其他实现可能不同;唯一真正的要求是print('Hello World')不引发 a NameError,假设在调用之前没有使用类似的东西del print,并且生成的函数调用符合内置函数的定义行为。


推荐阅读