Gibt es eine Möglichkeit, alle Module innerhalb eines Pakets von der Hauptanwendung auf Root-Ebene zu importieren und Funktionen innerhalb der Module sofort verfügbar in Python 3? Hier ist ein Beispiel Dateibaum:Wie mache ich Funktionen von einem Paket-Modul sofort zur Root-Anwendung in Python3
+app
|- __init__.py
|- main.py
|+ package
|- __init__.py
|- module.py #(contains function1, function2 and function 3)
Ich möchte folgende Import-Anweisung innerhalb des main.py vermeiden (es kann für komplexe Anwendungen lange und schlampig):
from package.module import function1, function2, function3
Das ist schön , weil ich dann function1()
von main.py anrufen kann. Das Importieren einer Funktion aus dem package.module allein bedeutet, dass ich dann das vollständige Verzeichnis der Funktion aufrufen muss, um es in meinem Skript zu verwenden (oder innerhalb einer neuen Funktion zu aliasieren). Zum Beispiel:
import package.module
package.module.function(param)#not fun...too long!
#or like this
def newFunction(param):
'''why create a new function to handle an already existing one?
Bad form and non Pythonic'''
return package.module.function(param)
Wenn ich __all__ = ["module1", "module2"]
im __init__.py
meiner Paket enthalten, das heißt, ich muss folgendes tun:
from package import * #it is said this is bad form as well
module.function(param)
#I just want the function and don't want to call module also
Mein Ziel ist es, das Paket und Modul zu importieren und dann voll haben Verwendung aller Funktionen innerhalb des Moduls, ohne das Paket und das Modul jedes Mal explizit aufrufen zu müssen, wenn ich die Funktion verwenden möchte. Denken Sie etwas in Richtung:
import package.module
function1(x)
Ich habe die documentation for Python 3 about modules and packages gelesen. Gedanken/Hilfe werden geschätzt.
Das ist in der Tat logisch @ MikeMüller, aber wenn ich viele Funktionen aus Modulen und Paketen importieren, können die Importanweisungen exponentiell wachsen. Ich nehme an, dass es möglich wäre, ein Importskript zu erstellen, um alle Funktionsimporte zu verarbeiten und dann einfach das aus der Hauptanwendung aufzurufen, obwohl ich es noch nie versucht habe. Wie werden extrem große Anwendungen gehandhabt, wenn 50+ Importe möglich sind? – Fergus
Sie müssen importieren, was Sie brauchen. Sie brauchen immer noch die gleiche Menge an Importanweisungen, egal ob Sie das '*' oder meine Methode verwenden. –
Danke nochmal @MikeMüller. Wie würde ich eine Datei erstellen, die alle meine Importe enthält und dann einfach das aus der Anwendung '__main __. Py' aufrufen? Es scheint, als ob das den Importprozess in der Haupt-App aufräumen würde. – Fergus