Как перечислить все функции в модуле Python? - PullRequest
341 голосов
/ 26 сентября 2008

В моей системе установлен модуль python, и я хотел бы видеть, какие функции / классы / методы доступны в нем.

Я хочу вызвать функцию doc для каждого из них. В ruby ​​я могу сделать что-то вроде ClassName.methods, чтобы получить список всех методов, доступных в этом классе. Есть ли что-то подобное в питоне?

например. что-то вроде:

from somemodule import foo
print foo.methods # or whatever is the correct method to call

Ответы [ 15 ]

3 голосов
/ 02 июня 2015

Ни один из этих ответов не будет работать, если вы не можете импортировать указанный файл Python без ошибок импорта. Это был тот случай, когда я проверял файл, созданный из большой базы кода с большим количеством зависимостей. Следующее будет обрабатывать файл как текст и искать все имена методов, начинающиеся с «def», и печатать их и номера строк.

import re
pattern = re.compile("def (.*)\(")
for i, line in enumerate(open('Example.py')):
  for match in re.finditer(pattern, line):
    print '%s: %s' % (i+1, match.groups()[0])
2 голосов
/ 09 января 2017

Кроме dir (модуль) или справки (модуль), упомянутых в предыдущих ответах, вы также можете попробовать:
- Открытый ipython
- импортировать имя_модуля
- введите имя_модуля, нажмите вкладку. Откроется небольшое окно со списком всех функций в модуле python.
Это выглядит очень аккуратно.

Вот фрагмент списка всех функций модуля hashlib

(C:\Program Files\Anaconda2) C:\Users\lenovo>ipython
Python 2.7.12 |Anaconda 4.2.0 (64-bit)| (default, Jun 29 2016, 11:07:13) [MSC v.1500 64 bit (AMD64)]
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import hashlib

In [2]: hashlib.
             hashlib.algorithms            hashlib.new                   hashlib.sha256
             hashlib.algorithms_available  hashlib.pbkdf2_hmac           hashlib.sha384
             hashlib.algorithms_guaranteed hashlib.sha1                  hashlib.sha512
             hashlib.md5                   hashlib.sha224
1 голос
/ 19 октября 2016

Вы можете использовать следующий метод для получения списка всех функций вашего модуля из оболочки:

import module

module.*?
0 голосов
/ 16 сентября 2018

Это добавит все функции, которые определены в your_module в список.

result=[]
for i in dir(unit8_conversion_methods):
    if type(getattr(your_module, i)).__name__ == "function":
        result.append(getattr(your_module, i))
0 голосов
/ 24 июня 2012

Неправильно (или, по крайней мере, больше) использовать dir (модуль) неправильно. Код должен читаться так:

dir('module') or dir('modules') 

Или вы указываете нужный модуль следующим образом: dir('sys') для получения результатов из имени модуля sys. dir() возвращает ошибки, а dir('') - это то, что вам нужно. * help ('') вернет справочную информацию, если она доступна для большинства функций. например; help('modules') вернет справочную информацию модуля.

Спасибо за все опущенные голоса. Я использовал Python3.2.2 и другие версии 3x, когда я опубликовал это. Смысл в том, чтобы использовать («материал») вместо предыдущего (материал). Но я предполагаю, что вы все застряли на Python2 или используете более новые версии для ПК, а не для мобильных устройств, как я.

http://effbot.org/librarybook/sys.htm

...