我正在尝试理解调用Python函数的过程,我创建了一个简单的
谢谢。 dis模块字节码片段
.pyc
文件来调用os.listdir('。')
,
我看到os
和listdir
保存在co_names
表中,执行CALL_FUNCTION
字节码指令时,如何识别os
库?是通过使用co_names
表中的名称吗?Python开始搜索名为os.pyc
的模块吗?如果是这样,Python如何知道在.pyc
模块中调用的函数的字节码偏移量在哪里?谢谢。 dis模块字节码片段
5 28 LOAD_NAME 0 (os)
31 LOAD_ATTR 2 (listdir)
34 LOAD_CONST 3 ('.')
37 CALL_FUNCTION 1
IMPORT_NAME
查找全局变量中的os
。因为先前使用import
语句导入了os
,所以它在那里。Python 知道listdir
函数的位置方式是在os
模块的命名空间中,即该模块的全局变量中。 - kindall