Python-pakker: Hvordan oprettes og importeres dem?

I denne artikel lærer du at opdele din kodebase i rene, effektive moduler ved hjælp af Python-pakker. Du lærer også at importere og bruge dine egne eller tredjepartspakker i dit Python-program.

Video: Python-pakker: Organiser din kode

Hvad er pakker?

Vi gemmer normalt ikke alle vores filer på vores computer samme sted. Vi bruger et velorganiseret katalog med kataloger for lettere adgang.

Lignende filer opbevares i samme bibliotek, for eksempel beholder vi muligvis alle sangene i " musik " -mappen. Analogt med dette har Python pakker til mapper og moduler til filer.

Da vores applikationsprogram bliver større i størrelse med mange moduler, placerer vi lignende moduler i en pakke og forskellige moduler i forskellige pakker. Dette gør et projekt (program) let at styre og konceptuelt klart.

På samme måde, da et bibliotek kan indeholde underkataloger og filer, kan en Python-pakke have underpakker og moduler.

En mappe skal indeholde en fil, der er navngivet __init__.py, for at Python kan betragte den som en pakke. Denne fil kan være tom, men vi placerer generelt initialiseringskoden for den pakke i denne fil.

Her er et eksempel. Antag, at vi udvikler et spil. En mulig organisering af pakker og moduler kunne være som vist i nedenstående figur.

Pakkemodulstruktur i Python-programmering

Importerer modul fra en pakke

Vi kan importere moduler fra pakker ved hjælp af dot (.) -Operatøren.

For eksempel, hvis vi vil importere startmodulet i ovenstående eksempel, kan det gøres som følger:

 import Game.Level.start

Hvis dette modul nu indeholder en navngivet funktion select_difficulty(), skal vi bruge det fulde navn til at henvise til det.

 Game.Level.start.select_difficulty(2)

Hvis denne konstruktion virker langvarig, kan vi importere modulet uden pakkepræfikset som følger:

 from Game.Level import start

Vi kan nu kalde funktionen simpelthen som følger:

 start.select_difficulty(2)

En anden måde at importere netop den krævede funktion (eller klasse eller variabel) fra et modul i en pakke ville være som følger:

 from Game.Level.start import select_difficulty

Nu kan vi direkte kalde denne funktion.

 select_difficulty(2)

Selvom det er lettere, anbefales denne metode ikke. Brug af det fulde navneområde undgår forvirring og forhindrer to samme identifikationsnavne i at kollidere.

Mens du importerer pakker, ser Python i listen over mapper, der er defineret i sys.path, ligesom for modulets søgesti.

Interessante artikler...