我在 Python33/Lib 中找到了所有其他模块,但我找不到这些。我敢肯定还有其他人“失踪”了,但这些是我唯一注意到的。当我导入它们时它们工作得很好,我只是找不到它们。我检查了 sys.path 并且它们不在其中。它们是内置的还是什么?
4 回答
math
和sys
模块是内置的——出于速度的目的,它们是用 C 语言编写的,并直接合并到 Python 解释器中。
要获取所有内置函数的完整列表,您可以运行:
>>> import sys
>>> sys.builtin_module_names
在我的机器上,结果如下:
__builtin__
__main__
_ast
_bisect
_codecs
_codecs_cn
_codecs_hk
_codecs_iso2022
_codecs_jp
_codecs_kr
_codecs_tw
_collections
_csv
_functools
_heapq
_hotshot
_io
_json
_locale
_lsprof
_md5
_multibytecodec
_random
_sha
_sha256
_sha512
_sre
_struct
_subprocess
_symtable
_warnings
_weakref
_winreg
array
audioop
binascii
cPickle
cStringIO
cmath
datetime
errno
exceptions
future_builtins
gc
imageop
imp
itertools
marshal
math
mmap
msvcrt
nt
operator
parser
signal
strop
sys
thread
time
xxsubtype
zipimport
zlib
These modules are not written in Python but in C.
You can find them (at least on linux) in a subfolder of the lib-folder called lib-dynload.
The math module is then in a file math.cpython-33m.so
(on windows probably with .dll
instead of .so
). The cpython-33m
part is my python version (3.3).
The modules like math, time, gc are not written in python and as rightly said in above answers that they are somewhere (written or moduled) within python interpreter. If you import sys and then use sys.builtin_module_names (it gives tuple of module names built into this interpreter). math is one such module in this list. So, we can see that math comes from here and is not separately written in library or any other folder as a python code.