Der Inhalt dieses Artikels handelt davon, was das Paket in Python ist. Was macht es? Die Einführung von Paketen in Python hat einen gewissen Referenzwert. Ich hoffe, dass es für Sie hilfreich ist.
1. Was ist ein Paket?
Paket ist eine Möglichkeit, den Python-Modul-Namespace über „.module name“ zu organisieren als Paket bezeichnet werden.
Aber bitte beachten Sie, dass es in Python2 angegeben ist. Die Datei __init__.py muss im Paket vorhanden sein.
Der Zweck von Beim Erstellen eines Pakets geht es nicht darum, es auszuführen, sondern um es zu importieren und zu verwenden. Ein Paket ist nur eine Form, und das Wesentliche eines Pakets ist ein Modul.
Welche Rolle spielt ein Paket?
Paket Es handelt sich im Wesentlichen um einen Ordner, daher besteht die einzige Funktion eines Ordners darin, Dateien zu organisieren. Da immer mehr Funktionen geschrieben werden, können wir nicht
alle Funktionen in einem Ordner ablegen, daher verwenden wir Module Da es immer mehr Module gibt, müssen wir Ordner zum Organisieren von
Moduldateien verwenden, um die Struktur und Wartbarkeit des Programms zu verbessern.
Weiter Erstellen Sie einige Pakete für späteres Lernen . Pakete sind einfach zu erstellen. Sie benötigen lediglich einen Ordner mit __init__.py
Erstellen Sie die Verzeichnisstruktur Wir fügen jedem Ordner einige Methoden hinzu :import os os.makedirs('glance/api') os.makedirs('glance/cmd') os.makedirs('glance/db') l = [] l.append(open('glance/__init__.py','w')) l.append(open('glance/api/__init__.py','w')) l.append(open('glance/api/policy.py','w')) l.append(open('glance/api/versions.py','w')) l.append(open('glance/cmd/__init__.py','w')) l.append(open('glance/cmd/manage.py','w')) l.append(open('glance/db/__init__.py','w')) l.append(open('glance/db/models.py','w')) map(lambda f:f.close() ,l)
#policy.py def get(): print('from policy.py') #versions.py def create_resource(conf): print('from version.py: ',conf) #manage.py def main(): print('from manage.py') #models.py def register_models(engine): print('from models.py: ',engine)
3. Was macht __init__.py?
Egal welche Methode wir zum Importieren eines Pakets verwenden, solange es sich um den ersten Import handelt Das Paket oder ein anderer Teil des Pakets wird Führen Sie zuerst die Datei __init__.py aus.Diese Datei kann leer sein, aber auch etwas Initialisierungscode speichern.Dann haben wir vorher verwendet. Kann from xxx import * für Paketaufrufe verwendet werden? Ja, wir müssen __all__ in der Datei __init__.py angeben, um den Inhalt des *-Imports zu bestimmen.import glance.db.models glance.db.models.register_models('mysql') from glance.api.policy import get get()
print("我是glance的__init__.py⽂件. ") x = 10 def hehe(): print("我是呵呵") def haha(): print("我是哈哈") __all__ = ['x', "hehe"]
1). Absoluter Import: Blick als Ausgangspunkt
Als Ausgangspunkt verwenden wir ⽤glance/cmd /manage.py im Blick/api/version.py
from glance import * print(x) # OK hehe() # OK haha() # 报错. __all__⾥没有这个⻤东⻄
Wir sollten beim Testen darauf achten, dass der Python-Paketpfad mit dem Verzeichnis übereinstimmt, in dem sich das laufende Skript befindet
In Python darf das von Ihnen ausgeführte Programm den Umfang des aktuellen Pakets nicht überschreiten (relativer Import). Wenn Sie den absoluten Import verwenden, gibt es kein solches Problem. Das heißt, wenn Sie relativ verwenden Im Paket importieren, dann können Sie bei Verwendung der Informationen im Paket nur
# 在glance/api/version.py #绝对导⼊ from glance.cmd import manage manage.main() #相对导⼊ # 这种情形不可以在versions中启动程序. # attempted relative import beyond top-level package from ..cmd import manage manage.main()
außerhalb des Pakets importieren. Wenn der Eintrag unseres Programms richtlinienkonform ist, gibt es kein Problem damit Wenn wir die Richtlinie jedoch von außen importieren, wird ein Fehler gemeldet Beim Festlegen der Richtlinie befindet sich der Pfad in .sys.path daher nicht direkt. Daher wird auf jeden Fall ein Fehler gemeldet:
# 在policy.py import versions
Wenn wir es machen Beim Importieren des Pakets ist ein Fehler aufgetreten. Schauen Sie sich zunächst die Paketinformationen an. 5. Importieren Sie das Paket Da in __init__.py kein Laden von Unterpaketen möglich ist, müssen wir den Inhalt der Unterpakete separat in 1 einfügen. Verwenden Sie relative Pfade
2. Hinweise zur Verwendung des absoluten Pfads Paket: Die Importanweisungen im Zusammenhang mit dem Paket sind ebenfalls import und from xxx import xxx, aber egal Welches verwendet wird, egal wo es ist, Sie müssen beim Importieren ein Prinzip befolgen: Alles, was beim Importieren einen Punkt enthält, muss auf der linken Seite des Punktes
ein Paket sein. Andernfalls wird ein Fehler gemeldet . Sie können eine Reihe von Punkten mitbringen, zum Beispiel: from a.b.c import d
Das obige ist der detaillierte Inhalt vonWas ist das Paket in Python? Was macht es? Einführung in Pakete in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!