I den här artikeln lär du dig att skapa och importera anpassade moduler i Python. Du hittar också olika tekniker för att importera och använda anpassade och inbyggda moduler i Python.
Video: Python-moduler
Vad är moduler i Python?
Moduler hänvisar till en fil som innehåller Python-uttalanden och definitioner.
En fil som innehåller Python-kod, till exempel:, example.py
kallas en modul och dess modulnamn skulle vara example
.
Vi använder moduler för att dela upp stora program i små hanterbara och organiserade filer. Dessutom ger moduler återanvändbarhet av kod.
Vi kan definiera våra mest använda funktioner i en modul och importera den istället för att kopiera deras definitioner till olika program.
Låt oss skapa en modul. Skriv följande och spara 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
Här har vi definierat en funktion add()
i en modul som heter example
. Funktionen tar in två siffror och returnerar deras summa.
Hur importerar jag moduler i Python?
Vi kan importera definitionerna inuti en modul till en annan modul eller den interaktiva tolk i Python.
Vi använder import
nyckelordet för att göra detta. För att importera vår tidigare definierade modul example
skriver vi följande i Python-prompten.
>>> import example
Detta importerar inte namnen på de funktioner som definierats example
direkt i den aktuella symboltabellen. Det importerar bara modulnamnet example
dit.
Med hjälp av modulnamnet kan vi komma åt funktionen med hjälp av punktoperatören .
. Till exempel:
>>> example.add(4,5.5) 9.5
Python har massor av standardmoduler. Du kan kolla in hela listan över Python-standardmoduler och deras användningsfall. Dessa filer finns i Lib-katalogen på platsen där du installerade Python.
Standardmoduler kan importeras på samma sätt som vi importerar våra användardefinierade moduler.
Det finns olika sätt att importera moduler. De listas nedan …
Python-importuttalande
Vi kan importera en modul med hjälp av import
uttalandet och komma åt definitionerna inuti den med hjälp av punktoperatören som beskrivs ovan. Här är ett exempel.
# import statement example # to import standard module math import math print("The value of pi is", math.pi)
När du kör programmet blir resultatet:
Värdet på pi är 3.141592653589793
Importera med namnbyte
Vi kan importera en modul genom att byta namn på den enligt följande:
# import module by renaming it import math as m print("The value of pi is", m.pi)
Vi har bytt namn på math
modulen till m
. Detta kan spara tid för oss att skriva.
Observera att namnet math
inte känns igen i vårt omfång. Följaktligen math.pi
är ogiltigt och m.pi
är rätt implementering.
Python från … importuttalande
Vi kan importera specifika namn från en modul utan att importera modulen som helhet. Här är ett exempel.
# import only pi from math module from math import pi print("The value of pi is", pi)
Här importerade vi bara pi
attributet från math
modulen.
I sådana fall använder vi inte punktoperatören. Vi kan också importera flera attribut enligt följande:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
Importera alla namn
Vi kan importera alla namn (definitioner) från en modul med följande konstruktion:
# import all names from the standard module math from math import * print("The value of pi is", pi)
Här har vi importerat alla definitioner från matematikmodulen. Detta inkluderar alla namn som är synliga i vårt omfång utom de som börjar med en understrykning (privata definitioner).
Att importera allt med asterisk (*) är inte en bra programmeringsmetod. Detta kan leda till dubbla definitioner för en identifierare. Det hindrar också läsbarheten av vår kod.
Sökväg för Python-modul
Under import av en modul tittar Python på flera platser. Tolk letar först efter en inbyggd modul. Sedan (om den inbyggda modulen inte hittades) tittar Python på en lista över kataloger som definierats i sys.path
. Sökningen är i denna ordning.
- Den aktuella katalogen.
PYTHONPATH
(en miljövariabel med en lista över kataloger).- Den installationsberoende standardkatalogen.
>>> importera 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 använda dir()
funktionen för att ta reda på namn som definieras i en modul.
Till exempel har vi definierat en funktion add()
i modulen example
som vi hade i början.
Vi kan använda dir
i example
modul på följande sätt:
>>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')
Här kan vi se en sorterad namnlista (tillsammans med add
). Alla andra namn som börjar med en understrykning är standard Python-attribut som är associerade med modulen (inte användardefinierad).
Till exempel __name__
innehåller attributet namnet på modulen.
>>> import example >>> example.__name__ 'example'
Alla namn som definierats i vårt nuvarande namnområde kan hittas med dir()
funktionen utan några argument.
>>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')