I denne artikel lærer du at oprette og importere brugerdefinerede moduler i Python. Du finder også forskellige teknikker til at importere og bruge tilpassede og indbyggede moduler i Python.
Video: Python-moduler
Hvad er moduler i Python?
Moduler henviser til en fil, der indeholder Python-udsagn og definitioner.
En fil, der indeholder Python-kode, example.py
kaldes for eksempel: et modul, og dets modulnavn ville være example
.
Vi bruger moduler til at nedbryde store programmer i små håndterbare og organiserede filer. Desuden giver moduler genanvendelighed af kode.
Vi kan definere vores mest anvendte funktioner i et modul og importere det i stedet for at kopiere deres definitioner til forskellige programmer.
Lad os oprette et modul. Skriv følgende og gem det som example.py
.
# Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result
Her har vi defineret en funktion add()
inde i et navngivet modul example
. Funktionen indtager to tal og returnerer deres sum.
Hvordan importeres moduler i Python?
Vi kan importere definitionerne inde i et modul til et andet modul eller den interaktive tolk i Python.
Vi bruger import
nøgleordet til at gøre dette. For at importere vores tidligere definerede modul example
skriver vi følgende i Python-prompten.
>>> import example
Dette importerer ikke navnene på de funktioner, der er defineret example
direkte i den aktuelle symboltabel. Det importerer kun modulnavnet example
der.
Ved hjælp af modulnavnet kan vi få adgang til funktionen ved hjælp af dot- .
operatoren. For eksempel:
>>> example.add(4,5.5) 9.5
Python har masser af standardmoduler. Du kan tjekke den fulde liste over Python-standardmoduler og deres brugssager. Disse filer findes i Lib-biblioteket inden for det sted, hvor du installerede Python.
Standardmoduler kan importeres på samme måde, som vi importerer vores brugerdefinerede moduler.
Der er forskellige måder at importere moduler på. De er angivet nedenfor …
Python-importerklæring
Vi kan importere et modul ved hjælp af import
udsagnet og få adgang til definitionerne inde i det ved hjælp af dotoperatoren som beskrevet ovenfor. Her er et eksempel.
# import statement example # to import standard module math import math print("The value of pi is", math.pi)
Når du kører programmet, vil output være:
Værdien af pi er 3.141592653589793
Import med omdøbning
Vi kan importere et modul ved at omdøbe det som følger:
# import module by renaming it import math as m print("The value of pi is", m.pi)
Vi har omdøbt math
modulet til m
. Dette kan i nogle tilfælde spare os for at skrive tid.
Bemærk, at navnet math
ikke genkendes i vores omfang. Derfor math.pi
er ugyldig og m.pi
er den korrekte implementering.
Python fra … importerklæring
Vi kan importere specifikke navne fra et modul uden at importere modulet som helhed. Her er et eksempel.
# import only pi from math module from math import pi print("The value of pi is", pi)
Her importerede vi kun pi
attributten fra math
modulet.
I sådanne tilfælde bruger vi ikke prikoperatoren. Vi kan også importere flere attributter som følger:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
Importer alle navne
Vi kan importere alle navne (definitioner) fra et modul ved hjælp af følgende konstruktion:
# import all names from the standard module math from math import * print("The value of pi is", pi)
Her har vi importeret alle definitionerne fra matematikmodulet. Dette inkluderer alle navne, der er synlige i vores omfang, undtagen dem, der begynder med en understregning (private definitioner).
Import af alt med stjerne (*) -symbolet er ikke en god programmeringspraksis. Dette kan føre til duplikatdefinitioner for en identifikator. Det hæmmer også læsbarheden af vores kode.
Python-modul søgesti
Under import af et modul ser Python flere steder. Tolken leder først efter et indbygget modul. Derefter (hvis det indbyggede modul ikke findes) ser Python på en liste over mapper, der er defineret i sys.path
. Søgningen er i denne rækkefølge.
- Den aktuelle mappe.
PYTHONPATH
(en miljøvariabel med en liste over mapper).- Den installationsafhængige standardmappe.
>>> import sys >>> sys.path ('', 'C: \ Python33 \ Lib \ idlelib', 'C: \ Windows \ system32 \ python33.zip', 'C: \ Python33 \ DLLs ',' C: \ Python33 \ lib ',' C: \ Python33 ',' C: \ Python33 \ lib \ site-packages ')
We can add and modify this list to add our own path.
Reloading a module
The Python interpreter imports a module only once during a session. This makes things more efficient. Here is an example to show how this works.
Suppose we have the following code in a module named my_module
.
# This module shows the effect of # multiple imports and reload print("This code got executed")
Now we see the effect of multiple imports.
>>> import my_module This code got executed >>> import my_module >>> import my_module
We can see that our code got executed only once. This goes to say that our module was imported only once.
Now if our module changed during the course of the program, we would have to reload it.One way to do this is to restart the interpreter. But this does not help much.
Python provides a more efficient way of doing this. We can use the reload()
function inside the imp
module to reload a module. We can do it in the following ways:
>>> import imp >>> import my_module This code got executed >>> import my_module >>> imp.reload(my_module) This code got executed
The dir() built-in function
Vi kan bruge dir()
funktionen til at finde ud af navne, der er defineret i et modul.
For eksempel har vi defineret en funktion add()
i modulet, example
som vi havde i starten.
Vi kan bruge dir
i example
modulet på følgende måde:
>>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')
Her kan vi se en sorteret liste over navne (sammen med add
). Alle andre navne, der begynder med en understregning, er standard Python-attributter tilknyttet modulet (ikke brugerdefineret).
F.eks. __name__
Indeholder attributten navnet på modulet.
>>> import example >>> example.__name__ 'example'
Alle de navne, der er defineret i vores nuværende navneområde, kan findes ved hjælp af dir()
funktionen uden argumenter.
>>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')