Was ist der Unterschied zwischen einem Python-Modul und einem Python-Paket?
Siehe auch: Was ist der Unterschied zwischen "Paket" und "Modul"? (für andere Sprachen)
Was ist der Unterschied zwischen einem Python-Modul und einem Python-Paket?
Siehe auch: Was ist der Unterschied zwischen "Paket" und "Modul"? (für andere Sprachen)
Eine späte Antwort, aber eine andere Definition:
Ein Paket wird durch eine importierte Top-Entität dargestellt, die entweder ein in sich geschlossenes Modul sein kann, oder die
__init__.py
Spezialmodul als die Top-Entität aus einer Reihe von Modulen innerhalb einer Unterverzeichnisstruktur.
Physikalisch gesehen ist ein Paket also eine Vertriebseinheit, die ein oder mehrere Module bereitstellt.
Modul : Ein Modul ist eine einfache Python-Datei mit einem ( .py
) Erweiterung, die Sammlungen von Funktionen und globalen Variablen enthält. Es handelt sich um eine ausführbare Datei, und der Begriff des Pakets in Python wird verwendet, um alle Module anzuordnen.
Ein Beispiel : Speichern Sie den Code in einer Datei namens demo ( module.py
).
def myModule1(name):
print("My Module name is: "+ name)
Importieren Sie das Demomodul und verwenden Sie die Funktion myModule1 in diesem Modul.
import demo_module
demo_module.myModule1("Math")
Lösung:
Mein Modulname ist: Mathematik
Paket: Ein Paket ist ein Basisverzeichnis, das eine Sammlung von Modulen enthält. Dieses Verzeichnis enthält sowohl Python-Module als auch ein ( __init .py__
), die der Interpreter verwendet, um sie als Paket zu erkennen. Das Paket ist nichts anderes als ein Namensraum. Innerhalb des Pakets gibt es Unterpakete.
Ein Beispiel:
Student (Paket)
| __init__.py
(Konstrukteur)
| details.py
(Modul)
| marks.py
(Modul)
| collegeDetails.py
(Modul)
| demo_module.py
(Modul)
Ein Paket ist eine Gruppe von Modulen, die in Verzeichnissen organisiert sind und ein Paketverzeichnis bilden.
from Student import details, collegeDetails, demo_module
Ich habe die verschiedenen Antworten gelesen, die auf diese Frage gegeben wurden. Das Thema wird umfassend behandelt. Aber es scheint mir, dass ein zusätzlicher Punkt keine schlechte Idee ist. Wenn wir den Wert von __Paket__ für verschiedene Module, kommen wir zu folgendem Ergebnis. Alle sind Modultypen, aber für einige von ihnen ist das Paket nicht definiert. Prüfen Sie __Paket__ für " zufällig " und " Mathe ".
import cv2
import math
import random
import tkinter as tk
print('cv2:',type(cv2)) # <class 'module'>
print('cv2:',cv2) # <module 'cv2.cv2' from 'PATH'>
print('cv2:',cv2.__package__) # cv2
print('random:',type(random)) # <class 'module'>
print('random:',random) # <module 'random' from 'PATH'>
print('random:',random.__package__) # [EMPTY]
print('tk:',type(tk)) # <class 'module'>
print('tk:',tk) # <module 'tkinter' from 'PATH'>
print('tk:',tk.__package__) # tkinter
print('math:',type(math)) # <class 'module'>
print('math:',math) # <module 'math' (built-in)>
print('math:',math.__package__) # [EMPTY]
Wenn wir also einen Ordner wie folgt definieren:
Auf diese Weise können wir die __Paket__ Ausgabe:
import myfolder
import myfolder.script1 as s1
import myfolder.script2 as s2
import myfolder.mySubfolder.script3 as s3
print(type(s1)) # <class 'module'>
print(type(s2)) # <class 'module'>
print(type(s3)) # <class 'module'>
print(s1.__package__) # myfolder
print(s2.__package__) # myfolder
print(s3.__package__) # myfolder.mySubfolder
print(myfolder) # <module 'myfolder' (namespace)>
print(myfolder.mySubfolder) # <module 'myfolder.mySubfolder' (namespace)>
print(myfolder.mySubfolder.script3) # <module 'myfolder.mySubfolder.script3' from 'PATH'>
print(myfolder.__package__) # myfolder
print(myfolder.mySubfolder.__package__) # myfolder.mySubfolder
print(myfolder.mySubfolder.script3.__package__) # myfolder.mySubfolder
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.