Python-moduler: Lär dig att skapa och importera anpassade och inbyggda moduler

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.pykallas 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 importnyckelordet för att göra detta. För att importera vår tidigare definierade modul exampleskriver vi följande i Python-prompten.

 >>> import example

Detta importerar inte namnen på de funktioner som definierats exampledirekt i den aktuella symboltabellen. Det importerar bara modulnamnet exampledit.

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 importuttalandet 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å mathmodulen till m. Detta kan spara tid för oss att skriva.

Observera att namnet mathinte 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 piattributet från mathmodulen.

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 examplesom vi hade i början.

Vi kan använda diri examplemodul 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')

Intressanta artiklar...