Python-moduler: Lær deg å lage og importere egendefinerte og innebygde moduler

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 importnø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 exampledirekte i den nåværende symboltabellen. Det importerer bare modulnavnet exampleder.

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 importsetningen 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 mathmodulen til m. Dette kan i noen tilfeller spare oss for å skrive tid.

Merk at navnet mathikke gjenkjennes i vårt omfang. Derfor math.pier ugyldig, og m.pier 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 piattributtet fra mathmodulen.

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 examplesom vi hadde i begynnelsen.

Vi kan bruke diri examplemodulen 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')

Interessante artikler...