Heim > Artikel > Backend-Entwicklung > Python-Module
Mit Modulen können Sie Ihre Python-Codefragmente logisch organisieren.
Durch die Zuweisung verwandten Codes zu einem Modul kann Ihr Code benutzerfreundlicher und verständlicher werden.
Module sind auch Python-Objekte mit zufälligen Namensattributen zur Bindung oder Referenz.
Einfach ausgedrückt ist ein Modul eine Datei, die Python-Code speichert. Module können Funktionen, Klassen und Variablen definieren. Module können auch ausführbaren Code enthalten.
Beispiel
Der Python-Code in einem Modul namens aname befindet sich normalerweise in einer Datei namens aname.py. Das folgende Beispiel ist ein einfaches Modul support.py.
def print_func( par ):
print "Hallo: ", par
Import-Anweisung
Wenn Sie eine Python-Quelldatei verwenden möchten, müssen Sie die Import-Anweisung nur in einer anderen Quelldatei ausführen. Die Syntax lautet wie folgt:
import module1[, module2[,... moduleN]
Wenn der Interpreter auf eine Importanweisung stößt, wird das Modul importiert, sofern es sich im aktuellen Suchpfad befindet.
Der Suchpfad ist eine Liste aller Verzeichnisse, die der Interpreter zuerst durchsucht. Wenn Sie das Modul hello.py importieren möchten, müssen Sie den Befehl oben im Skript einfügen:
#!/usr/bin/python
# Modul importieren
Importunterstützung
# Jetzt können Sie die im Modul
support.print_func(" Zara") Das Ausgabeergebnis des obigen Beispiels: Hallo: Zara Ein Modul wird nur einmal importiert, egal wie oft Sie führen den Import aus. Dadurch wird verhindert, dass importierte Module immer wieder ausgeführt werden. From...import-Anweisung Mit der From-Anweisung von Python können Sie einen bestimmten Teil aus einem Modul in den aktuellen Namespace importieren. Die Syntax lautet wie folgt: from modname import name1[, name2[, ... nameN]] Um beispielsweise die Fibonacci-Funktion des Moduls fib zu importieren, verwenden Sie die folgende Anweisung: from fib import fibonacci Diese Anweisung importiert nicht das gesamte fib-Modul in den aktuellen Namespace, sondern führt nur die Fibonacci in fib einzeln ein Führen Sie diese Anweisung aus. Die globale Symboltabelle des Moduls. From...import *-Anweisung Es ist auch möglich, den gesamten Inhalt eines Moduls in den aktuellen Namensraum zu importieren, verwenden Sie einfach die folgende Anweisung: from mod_name import * Dies bietet eine einfache Möglichkeit dazu Importieren Sie alle Projekte in einem Modul. Diese Aussage sollte jedoch nicht überstrapaziert werden. SpeicherortmodulWenn Sie ein Modul importieren, lautet die Suchreihenfolge des Python-Parsers für den Modulspeicherort: Aktuelles VerzeichnisWenn es sich nicht im aktuellen Verzeichnis befindet, durchsucht Python jedes Verzeichnis unter der Shell-Variablen PYTHONPATH. Wenn keines von beiden gefunden wird, überprüft Python den Standardpfad. Unter UNIX ist der Standardpfad im Allgemeinen /usr/local/lib/python/ Der Modulsuchpfad wird in der Variablen sys.path des Systemmoduls gespeichert. Die Variablen enthalten das aktuelle Verzeichnis, PYTHONPATH und das durch den Installationsprozess festgelegte Standardverzeichnis. PYTHONPATH-Variable Als Umgebungsvariable besteht PYTHONPATH aus vielen Verzeichnissen, die in einer Liste installiert sind. Die Syntax von PYTHONPATH ist dieselbe wie die der Shell-Variablen PATH. In Windows-Systemen lautet der typische PYTHONPATH wie folgt: set PYTHONPATH=c:python20lib; In UNIX-Systemen lautet der typische PYTHONPATH wie folgt: set PYTHONPATH=/usr /local/lib /python Namespace und GeltungsbereichVariablen sind Namen (Bezeichner), die übereinstimmende Objekte haben. Ein Namespace ist ein Wörterbuch, das Variablennamen (Schlüssel) und die entsprechenden Objekte (Werte) enthält. Ein Python-Ausdruck kann auf Variablen im lokalen Namespace und im globalen Namespace zugreifen. Wenn eine lokale Variable denselben Namen wie eine globale Variable hat, überschreibt die lokale Variable die globale Variable. Jede Funktion hat ihren eigenen Namensraum. Die Gültigkeitsbereichsregeln für Klassenmethoden sind dieselben wie für reguläre Funktionen. Python errät intelligent, ob eine Variable lokal oder global ist, vorausgesetzt, dass jede innerhalb einer Funktion zugewiesene Variable lokal ist. Wenn Sie daher einer globalen Variablen in einer Funktion einen Wert zuweisen möchten, müssen Sie die globale Anweisung verwenden. Der Ausdruck global VarName teilt Python mit, dass VarName eine globale Variable ist, sodass Python nicht im lokalen Namespace nach dieser Variablen sucht. Zum Beispiel definieren wir eine Variable Geld im globalen Namensraum. Anschließend weisen wir der Variablen „Geld“ innerhalb der Funktion einen Wert zu, und Python geht dann davon aus, dass „Geld“ eine lokale Variable ist. Allerdings haben wir vor dem Zugriff keine lokale Variable „money“ deklariert, und das Ergebnis ist ein UnboundLocalError. Das Auskommentieren der globalen Anweisung kann dieses Problem lösen. #!/usr/bin/pythonMoney = 2000
def AddMoney():
# Wenn Sie den Code korrigieren möchten, entkommentieren Sie Folgendes:
# global Money
Geld = Geld 1
Geld drucken
AddMoney()
Geld drucken
dir()-Funktion
dir()-Funktion ist eine sortierte Liste von Zeichenfolgen, deren Inhalt der in einem Modul definierte Name ist.
Die zurückgegebene Liste enthält alle in einem Modul definierten Module, Variablen und Funktionen. Hier ist ein einfaches Beispiel:
#!/usr/bin/python
# Importieren Sie das integrierte Mathe-Modul
Mathe importieren
content = dir(math)
Inhalt drucken;
Das Ausgabeergebnis des obigen Beispiels:
['__doc__', '__file__ ', '__name__', 'acos', 'asin', 'atan',
'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp',
'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log',
'log10', 'modf ', 'pi', 'pow', 'radians', 'sin', 'sinh',
'sqrt', 'tan', 'tanh']
Hier zeigt die spezielle String-Variable __name__ auf den Namen des Moduls und __file__ auf den Namen der Importdatei des Moduls.
Funktionen globals() und locals()
Je nachdem, wo sie aufgerufen werden, können die Funktionen globals() und locals() verwendet werden, um global und lokal zurückzugeben Namespaces benennen in.
Wenn locals() innerhalb einer Funktion aufgerufen wird, werden alle Namen zurückgegeben, auf die in der Funktion zugegriffen werden kann.
Wenn globals() innerhalb einer Funktion aufgerufen wird, werden alle globalen Namen zurückgegeben, auf die in der Funktion zugegriffen werden kann.
Die Rückgabetypen beider Funktionen sind Wörterbücher. Daher können die Namen mit der Funktion „keys()“ extrahiert werden.
reload()-Funktion
Wenn ein Modul in ein Skript importiert wird, wird der Code im obersten Teil des Moduls nur einmal ausgeführt.
Wenn Sie daher den Top-Level-Code im Modul erneut ausführen möchten, können Sie die Funktion reload() verwenden. Diese Funktion importiert zuvor importierte Module erneut. Die Syntax lautet wie folgt:
reload(module_name)
Hier sollte module_name direkt den Namen des Moduls anstelle einer Zeichenfolge eingeben. Wenn Sie beispielsweise das Hello-Modul neu laden möchten, gehen Sie wie folgt vor:
reload(hello)
Pakete in Python
Ein Paket ist eine hierarchische Dateiverzeichnisstruktur, die eine Python-Anwendungsumgebung definiert, die aus Modulen und Unterpaketen sowie Unterpaketen unter Unterpaketen besteht. Pakete.
Stellen Sie sich eine pots.py-Datei im Telefonverzeichnis vor. Diese Datei hat den folgenden Quellcode:
#!/usr/bin/python
def Pots() :
print „I'm Pots Phone“
Ähnlich haben wir zwei weitere, die unterschiedliche Funktionen haben Datei:
Phone/Isdn.py enthält die Funktion Isdn()
Phone/G3.py enthält die Funktion G3()
Erstellen Sie nun die Datei __init__ im Telefon Verzeichnis .py:
Phone/__init__.py
Wenn Sie Phone importieren, müssen Sie in __init__.py explizite Importanweisungen wie folgt verwenden, um alle Funktionen nutzen zu können :
aus Pots importieren Pots
aus Isdn importieren Isdn
aus G3 importieren G3
Nachdem Sie diese Codes zu __init__.py hinzugefügt haben, sind alle diese Klassen beim Importieren des Telefonpakets verfügbar.
#!/usr/bin/python
# Importieren Sie jetzt Ihr Telefonpaket.
Telefon importieren
Phone.Pots()
Phone.Isdn()
Phone.G3()
Das obige Beispiel-Ausgabeergebnis:
Ich bin Pots Phone
Ich bin ein 3G-Telefon
Ich bin ein ISDN-Telefon
Wie oben, als Beispiel: Wir platzieren nur eine Funktion in der Datei, aber Sie können tatsächlich viele Funktionen platzieren. Sie können in diesen Dateien auch Python-Klassen definieren und dann ein Paket für diese Klassen erstellen.