简要描述我的问题,请看下面的例子:
模块os
有一个函数getcwd()
,它返回当前的工作目录。但是os.getcwd()
文件中没有关于/usr/lib/python2.7/os.py
的详细信息。这个功能的执行在哪里?
os.path
也是python中的一个模块,但在/usr/lib/python2.7
目录中,没有名为os.path
的文件。那么当您在python脚本中import os.path
时,导入了哪个文件?
感谢所有帮助...
答案 0 :(得分:3)
1。 getcwd()函数在C look here中实现。
2。 os.path
在模块os中定义,动态检测os类型并导入相应的库并使用以下内容进行设置:sys.modules['os.path'] = path
答案 1 :(得分:2)
模块不一定是python脚本。使用C-API,您可以撰写modules in C or C++。您可以将它们编译为动态库,以便解释器可以动态加载它们,或者您可以重新编译解释器并将模块链接到它中。
答案 2 :(得分:1)
如果您使用的是POSIX系统(Linux,Mac OS X),os.py中的这些行会带来这些内容:
from posix import *
import posixpath as path
在Windows上:
from nt import *
import ntpath as path
(另外还有一些不太流行的系统选项)
请注意,使用from x import *
通常不赞成。这是一种特殊情况。
答案 3 :(得分:1)
交互式python shell可用于检查模块的加载位置,以及查看方法是内置的还是python:
>>> import os
>>> os
<module 'os' from '/usr/lib/python2.6/os.pyc'>
>>> os.path
<module 'posixpath' from '/usr/lib/python2.6/posixpath.pyc'>
>>> os.getcwd
<built-in function getcwd>
>>> os.path.join
<function join at 0x87d1b1c>
>>>
os.path
已从posixpath.pyc
加载,
os.getcwd
是内置的,os.path.join
是一种python方法。