I denne artikkelen lærer du å lage og importere tilpassede moduler i Python. Du finner også forskjellige teknikker for å importere og bruke tilpassede og innebygde moduler i Python.
Video: Python-moduler
Hva er moduler i Python?
Moduler refererer til en fil som inneholder Python-setninger og definisjoner.
En fil som inneholder Python-kode, for eksempel example.py
:, kalles en modul, og dens modulnavn vil være example
.
Vi bruker moduler for å bryte ned store programmer i små håndterbare og organiserte filer. Videre gir modulene gjenbrukbar kode.
Vi kan definere de mest brukte funksjonene våre i en modul og importere den, i stedet for å kopiere definisjonene til forskjellige programmer.
La oss lage en modul. Skriv inn følgende og lagre 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 definert en funksjon add()
inne i en modul som heter example
. Funksjonen tar inn to tall og returnerer summen.
Hvordan importerer du moduler i Python?
Vi kan importere definisjonene i en modul til en annen modul eller den interaktive tolk i Python.
Vi bruker import
nøkkelordet for å gjøre dette. For å importere den tidligere definerte modulen vår example
, skriver vi inn følgende i Python-ledeteksten.
>>> import example
Dette importerer ikke navnene på funksjonene som er definert i example
direkte i den nåværende symboltabellen. Det importerer bare modulnavnet example
der.
Ved å bruke modulnavnet kan vi få tilgang til funksjonen ved hjelp av prikkoperatøren .
. For eksempel:
>>> example.add(4,5.5) 9.5
Python har mange standardmoduler. Du kan sjekke ut den komplette listen over Python-standardmoduler og deres bruksområder. Disse filene er i Lib-katalogen på stedet der du installerte Python.
Standardmoduler kan importeres på samme måte som vi importerer våre brukerdefinerte moduler.
Det er forskjellige måter å importere moduler på. De er listet opp nedenfor …
Python-importerklæring
Vi kan importere en modul ved hjelp av import
setningen og få tilgang til definisjonene i den ved hjelp av prikkoperatøren 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 kjører programmet, vil utdataene være:
Verdien av pi er 3.141592653589793
Importer med nytt navn
Vi kan importere en modul ved å gi den nytt navn som følger:
# import module by renaming it import math as m print("The value of pi is", m.pi)
Vi har omdøpt math
modulen til m
. Dette kan i noen tilfeller spare oss for å skrive tid.
Merk at navnet math
ikke gjenkjennes i vårt omfang. Derfor math.pi
er ugyldig, og m.pi
er riktig implementering.
Python fra … importerklæring
Vi kan importere spesifikke navn fra en modul uten å importere modulen som helhet. Her er et eksempel.
# import only pi from math module from math import pi print("The value of pi is", pi)
Her importerte vi bare pi
attributtet fra math
modulen.
I slike tilfeller bruker vi ikke prikkoperatøren. Vi kan også importere flere attributter som følger:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
Importer alle navnene
Vi kan importere alle navn (definisjoner) fra en modul ved hjelp av følgende konstruksjon:
# import all names from the standard module math from math import * print("The value of pi is", pi)
Her har vi importert alle definisjonene fra matematikkmodulen. Dette inkluderer alle navn som er synlige i vårt omfang, unntatt de som begynner med en understreking (private definisjoner).
Importing everything with the asterisk (*) symbol is not a good programming practice. This can lead to duplicate definitions for an identifier. It also hampers the readability of our code.
Python Module Search Path
While importing a module, Python looks at several places. Interpreter first looks for a built-in module. Then(if built-in module not found), Python looks into a list of directories defined in sys.path
. The search is in this order.
- The current directory.
PYTHONPATH
(an environment variable with a list of directories).- The installation-dependent default directory.
>>> 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 bruke dir()
funksjonen til å finne ut navn som er definert i en modul.
For eksempel har vi definert en funksjon add()
i modulen example
som vi hadde i begynnelsen.
Vi kan bruke dir
i example
modulen på følgende måte:
>>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')
Her kan vi se en sortert navneliste (sammen med add
). Alle andre navn som begynner med en understreking er standard Python-attributter tilknyttet modulen (ikke brukerdefinert).
For eksempel __name__
inneholder attributtet navnet på modulen.
>>> import example >>> example.__name__ 'example'
Alle navnene som er definert i vårt nåværende navneområde kan bli funnet ut ved hjelp av dir()
funksjonen uten noen argumenter.
>>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')