Was ist das Paket in Python? Was macht es? Einführung in Pakete in Python

不言
Freigeben: 2018-11-20 16:10:57
nach vorne
7535 Leute haben es durchsucht

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)
Nach dem Login kopieren

Wir können den Inhalt des Pakets in test.py verwenden, und wenn wir das Paket importieren, können wir import oder from xxx verwenden. Die Form des Imports xxx

#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)
Nach dem Login kopieren

Beachten Sie jedoch : in der Form from xxx import xxx, „dot“ darf nach dem Import nicht erscheinen. Das heißt, from a.b import c ist in Ordnung.

Aber from a import b.c ist falsch

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()
Nach dem Login kopieren

test.py

print("我是glance的__init__.py⽂件. ")
x = 10
def hehe():
    print("我是呵呵")
    
def haha():
    print("我是哈哈")
__all__ = ['x', "hehe"]
Nach dem Login kopieren

4. Relativer Import und absoluter Import

Unser endgültiger Paketblick ist für die Verwendung durch andere geschrieben, und es wird auch gegenseitige Importe innerhalb des Blickpakets geben. Derzeit gibt es zwei Importmethoden: absoluter Import und relativer Import

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__⾥没有这个⻤东⻄
Nach dem Login kopieren

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()
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage