在Aptana中配置PyDev的Forced Builtins时,我注意到一些模块默认引用了_
(下划线)前缀。Python导入模块vs导入_module
于是我打开一个Python解释器和我吃惊的是,下面的工作进口:
import ast
import _ast
import bisect
import _bisect
import csv
import _csv
# ... and so on
现在,如果我这样做对进口模块dir()
,我看到不同的内容:
>>> dir(csv)
['Dialect', 'DictReader', 'DictWriter', 'Error', ...] # and so on
>>> dir(_csv)
['Dialect', 'Error', ...] # node that DictReader and DictWriter are missing
最后,help()告诉我他们是明显不同的模块:
>>> help(_csv)
Help on module _csv:
NAME
_csv - CSV parsing and writing.
FILE
/usr/lib64/python2.6/lib-dynload/_csv.so
...
>>> help(csv)
Help on module csv:
NAME
csv - CSV parsing and writing.
FILE
/usr/lib64/python2.6/csv.py
...
那么,import module
和import _module
之间有什么区别? 背后是否有一个约定或类似的东西?