Одно слово: inspect.
Модуль проверки предоставляет несколько полезных функций, помогающих получать информацию о живых объектах, таких как модули, классы, методы, функции, трассировки, объекты кадра и объекты кода. Например, он может помочь вам изучить содержимое класса, получить исходный код метода, извлечь и отформатировать список аргументов для функции или получить всю необходимую информацию для отображения подробной трассировки.
Это стандартная библиотека, а в документах есть примеры. Таким образом, вы просто print(inspect.getsource(os))
или сделать inspect.getsourcefile(os)
и т.д.
Обратите внимание, что некоторые из стандартных модулей библиотеки написаны на языке С (или даже поддельные модулей встроены в интерпретатор), в этом случае getsourcefile
возвращает ничего, но getfile
по крайней мере, скажу вам, что это .so
/.pyd
/что угодно, что вы можете использовать для поиска исходного источника C в, скажем, копии исходного кода Python.
Вы также можете просто ввести help(os)
и FILE
на самом верху дает путь (как правило, такой же, как getsourcefile
для модулей Python, таки getfile
иначе).
И вы всегда можете перейти в онлайн-источник для Python modules и C extension modules. Просто измените «2.7» на «3.3» и т. Д. В URL-адресе, чтобы получить разные версии. (Я считаю, что если вы удалите версию полностью, вы получите код магистральный, в настоящее время, соответствующее 3,4 пре-альфа, но не цитируйте меня на этом.)
os.listdir
функция фактически не определена непосредственно в os
; это эффективно from <platform-specific-module> import *
импортировано. Вы можете проследить его через несколько шагов самостоятельно, но обычно это будет posix_listdir
в posixmodule.c
на большинстве платформ. (Даже Windows, последние версии используют один и тот же файл, чтобы определить posix
модуль на не-Windows, а nt
и posix
модули на Windows, и есть куча #if defined(…)
вещи в коде.)
Самый простой вариант заключается в [ посмотрите его в документах] (http://docs.python.org/3/library/index.html). –
@Lattyware: Где документы говорят вам источник? Некоторые из модулей _do_ имеют ссылки на источник, обычно те, которые имеют в виду такие же примеры, как полезный код (например, 'asyncore'), но большинство из них не являются (например,' os'). – abarnert
@abarnert Я взял «прочитал, что он на самом деле» означает, как использовать его, а не видеть источник. Вопрос немного неясен, но, перечитывая его, ваша интерпретация, вероятно, правильная. –