6

Как перечислить все функции в модуле?

40

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

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

Например, что-то вроде:

from somemodule import foo
print(foo.methods)  # или как правильно вызвать

5 ответ(ов)

6

Вы можете использовать dir(module), чтобы увидеть все доступные методы и атрибуты. Также рекомендую ознакомиться с документацией по Python (PyDocs).

2

После того как вы импортировали модуль, вы можете просто выполнить:

help(modulename)

... чтобы получить документацию ко всем функциям сразу в интерактивном режиме. Либо вы можете использовать:

dir(modulename)

... чтобы просто получить список имен всех функций и переменных, определенных в модуле.

0

Ваш код на Python выполняет следующую задачу: он печатает список всех функций, определенных в модуле yourmodule. Давайте разберем его по частям.

  1. Импортируются необходимые модули: types, который предоставляет доступ к типам данных в Python, и ваш пользовательский модуль yourmodule.
  2. Используется list comprehension для создания списка, который включает функции из yourmodule.
  3. dir(yourmodule) возвращает список всех атрибутов модуля yourmodule, включая функции, классы и переменные.
  4. getattr(yourmodule, a) извлекает атрибут с именем a из модуля yourmodule.
  5. isinstance(getattr(yourmodule, a), types.FunctionType) проверяет, является ли этот атрибут функцией.
  6. В конце, весь список функций передается в print(), чтобы вывести его на экран.

Таким образом, если вы хотите получить и вывести все функции из модуля, ваш код корректен. Вот он в более структурированном виде:

import types
import yourmodule

# Получаем и выводим список всех функций в yourmodule
functions_list = [getattr(yourmodule, a) for a in dir(yourmodule)
                  if isinstance(getattr(yourmodule, a), types.FunctionType)]
print(functions_list)

Этот код поможет вам увидеть все функции модуля yourmodule. Если у вас возникнут дополнительные вопросы, не стесняйтесь их задавать!

0

Это сработает:

dir(module)

Однако, если вам неудобно читать возвращаемый список, просто используйте следующий цикл, чтобы выводить имена по одному в строке:

for i in dir(module): print(i)
0

Если вы не можете импортировать указанный файл 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]))

Этот код открывает файл Example.py, ищет строки, содержащие метод, и выводит имя метода вместе с номером строки, в которой он находится.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь