При конфигурировании PyDev's Forced Builtins в Aptana я заметил, что по умолчанию некоторые модули ссылались на префикс _
(подчеркивание).Модуль импорта Python vs import _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
? Есть ли соглашение за этим или что-то в этом роде?