Pakker og __init__.py
Organisér moduler i pakker med en passende mappestruktur.
Pakker og __init__.py er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.
Hvad er en pakke
En pakke er en mappe, der indeholder en __init__.py-fil og et eller flere moduler. Python behandler enhver sådan mappe som en pakke, du kan importere fra.
mypackage/
__init__.py
utils.py
math_helpers.pyFilen __init__.py
__init__.py køres, når pakken importeres. Den kan være tom eller eksponere udvalgte navne for kaldende kode.
# mypackage/__init__.py
from .utils import helper
from .math_helpers import addImport fra en pakke
Brug punktnotation til at importere undermoduler eller navne, der er defineret i __init__.py.
import mypackage
from mypackage import helper
from mypackage.math_helpers import add
print(add(2, 3))Underpakker
Pakker kan indlejres: En undermappe med sin egen __init__.py bliver en underpakke.
mypackage/
__init__.py
network/
__init__.py
http.pyRelative importer
Brug relative importer med et indledende punkt inde i en pakke for at referere til sidestillede moduler uden at hardkode pakkenavnet.
# mypackage/network/http.py
from ..utils import helper # two levels upAbsolutte kontra relative importer
Absolutte importer er entydige og foretrækkes. Relative importer er nyttige i store pakker, fordi de undgår lange navne.
# Absolute
from mypackage.utils import helper
# Relative (inside mypackage)
from .utils import helper__all__ i __init__.py
Definér __all__ for at styre, hvad from package import * eksporterer.
# mypackage/__init__.py
__all__ = ['helper', 'add']
from .utils import helper
from .math_helpers import addNavnerumspakker (PEP 420)
Python 3.3+ understøtter navnerumspakker — mapper uden __init__.py. Det er nyttigt, når en pakke skal opdeles på flere mapper.
# No __init__.py needed
# Just have the directory and import normally
import myns.moduleInitialisering af pakker med __init__
Brug __init__.py til at angive konstanter på pakkeniveau, konfigurere logning eller indlæse tunge undermoduler efter behov.
# mypackage/__init__.py
import logging
logging.getLogger(__name__).addHandler(logging.NullHandler())
VERSION = '1.0.0'Distribution af pakker
Tilføj pyproject.toml eller setup.py for at gøre pakken installerbar med pip.
# pyproject.toml excerpt
[project]
name = "mypackage"
version = "1.0.0"
# Install locally
# pip install -e .Undersøgelse af pakkeattributter
Brug __file__, __path__ og __name__ til at undersøge pakkens metadata under kørsel.
import mypackage
print(mypackage.__file__) # path to __init__.py
print(mypackage.__path__) # list of directory paths
print(mypackage.__name__) # 'mypackage'Hurtigt tjek
Hvilken fil gør en mappe til en Python-pakke?
Opsummering
Pakker organiserer moduler i mapper ved hjælp af __init__.py. Brug absolutte importer for tydelighed, relative importer inde i en pakke og __all__ til at styre offentlige API'er.
Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 76
- Lektioner
- 320
Ofte stillede spørgsmål
Er lektionen “Pakker og __init__.py” gratis?
Ja — hele teksten til “Pakker og __init__.py” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Pakker og __init__.py”?
Organisér moduler i pakker med en passende mappestruktur. Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Python Academy?
Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Pakker og __init__.py”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Python Academy-lektion?
Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Oprettelse og import af moduler
- Pythons standardbibliotek
- Pakker og __init__.py
- Installation af pakker med pip