python - python如何处理内置函数?
问题描述
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 实现提供的对象。
其他实现可能不同;唯一真正的要求是print('Hello World')
不引发 a NameError
,假设在调用之前没有使用类似的东西del print
,并且生成的函数调用符合内置函数的定义行为。
推荐阅读
- ruby - Ruby mongo 驱动程序:几秒钟后捕获 MongoDB 连接错误?
- typescript - 将对象类型转换为类型数组
- python - Python:从类中的方法向构造函数添加值
- c++ - wxProgressDialog 与 wxWidgets 3.1.3 一起崩溃
- scala - 返回超过 1 个错误的验证
- reactjs - 通过函数声明 setState
- node.js - Node.js 中的回调函数是什么?
- google-cloud-platform - 在 apache 气流中安装 Scrapy 会导致 INVALID_ARGUMENT
- java - (JAVA) 为我的自动售货机执行 while 循环
- android - 如何在 SharedPreference 中存储日期?