584 Stimmen

Wie kann man alle Funktionen in einem Python-Modul auflisten?

Ich habe ein Python-Modul auf meinem System installiert und würde gerne sehen, welche Funktionen/Klassen/Methoden darin verfügbar sind.

Ich möchte die help Funktion für jeden einzelnen. In Ruby kann ich etwas tun wie ClassName.methods um eine Liste aller für diese Klasse verfügbaren Methoden zu erhalten. Gibt es etwas Ähnliches in Python?

z. B. so etwas wie:

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

3voto

Vishal Lamba Punkte 131

Sie können die folgende Methode verwenden, um eine Liste aller Funktionen in Ihrem Modul von der Shell zu erhalten:

import module

module.*?

2 Stimmen

@GabrielFair auf welcher Version/Plattform läuft Python bei Ihnen? Ich erhalte einen Syntax-Fehler auf Py3.7/Win10.

1 Stimmen

+1 Funktioniert für mich auf Python 2.7 Ubuntu 16.04LTS mit ipython; und erfordert nicht imporitng zusätzliche Module.

0 Stimmen

Hat bei mir nicht funktioniert (python3).

2voto

Julien Faujanet Punkte 59
r = globals()
sep = '\n'+100*'*'+'\n' # To make it clean to read.
for k in list(r.keys()):
    try:
        if str(type(r[k])).count('function'):
            print(sep+k + ' : \n' + str(r[k].__doc__))
    except Exception as e:
        print(e)

Ausgang :

******************************************************************************************
GetNumberOfWordsInTextFile : 

    Calcule et retourne le nombre de mots d'un fichier texte
    :param path_: le chemin du fichier à analyser
    :return: le nombre de mots du fichier

******************************************************************************************

    write_in : 

        Ecrit les donnees (2nd arg) dans un fichier txt (path en 1st arg) en mode a,
        :param path_: le path du fichier texte
        :param data_: la liste des données à écrire ou un bloc texte directement
        :return: None

 ******************************************************************************************
    write_in_as_w : 

            Ecrit les donnees (2nd arg) dans un fichier txt (path en 1st arg) en mode w,
            :param path_: le path du fichier texte
            :param data_: la liste des données à écrire ou un bloc texte directement
            :return: None

2voto

Karthik Nandula Punkte 63

El Python-Dokumentation bietet hierfür die perfekte Lösung, die die eingebaute Funktion dir .

Sie können einfach Folgendes verwenden dir(modul_name) und gibt dann eine Liste der Funktionen innerhalb dieses Moduls zurück.

Zum Beispiel, dir(Zeit) wird zurückgegeben

['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'time_ns', 'timezone', 'tzname', 'tzset']

das ist die Liste der Funktionen, die das Modul "Zeit" enthält.

1voto

Manish Kumar Punkte 21

Damit werden alle Funktionen, die in your_module definiert sind, in einer Liste angehängt.

result=[]
for i in dir(your_module):
    if type(getattr(your_module, i)).__name__ == "function":
        result.append(getattr(your_module, i))

0 Stimmen

Was ist das? unit8_conversion_methods ? Ist dies nur ein Beispiel für den Namen des Moduls?

0 Stimmen

@nocibambi ja es ist nur ein Modulname.

2 Stimmen

Danke Manish. Ich schlage die folgende einzeilige Alternative vor: [getattr(your_module, func) for func in dir(your_module) if type(getattr(your_module, func)).__name__ == "function"]

1voto

Guimoute Punkte 3233

Wenn Sie die Liste aller Funktionen abrufen möchten, die in der Datei aktuelle Datei können Sie es auf diese Weise tun:

# Get this script's name.
import os
script_name = os.path.basename(__file__).rstrip(".py")

# Import it from its path so that you can use it as a Python object.
import importlib.util
spec = importlib.util.spec_from_file_location(script_name, __file__)
x = importlib.util.module_from_spec(spec)
spec.loader.exec_module(x)

# List the functions defined in it.
from inspect import getmembers, isfunction
list_of_functions = getmembers(x, isfunction)

Als Anwendungsbeispiel verwende ich dies für den Aufruf aller Funktionen, die in meinen Unit-Testing-Skripten definiert sind.

Dies ist eine Kombination von Codes, die aus den Antworten von Thomas Wouters y adrian hier, und von Sebastian Rittau zu einer anderen Frage.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X