繁体   English   中英

对python模块和函数感到困惑

[英]Confused about python modules and functions in it

为了简洁地描述我的问题,请查看以下示例:

  1. 模块os具有函数getcwd() ,该函数返回当前的工作目录。 但是/usr/lib/python2.7/os.py文件中没有关于os.getcwd()详细信息。 该功能的实现在哪里?

  2. os.path也是python中的一个模块,但是在/usr/lib/python2.7目录中,没有名为os.path文件。 因此,当您在python脚本中import os.path时, import os.path哪个文件?

感谢您的所有帮助...

1。 getcwd()函数在C look here中实现

2。 os.path在模块os中定义,方法是动态检测os类型并导入对应的库,并使用以下命令在其中进行设置: sys.modules['os.path'] = path

模块不必是python脚本。 使用C-API可以用C或C ++编写模块 您可以将它们编译为动态库,以便解释器可以动态加载它们,也可以重新编译解释器并将模块链接到其中。

如果您使用的是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 * 这是一种特殊情况。

交互式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方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM