Python moduli: naučite stvarati i uvoziti prilagođene i ugrađene module

U ovom ćete članku naučiti stvarati i uvoziti prilagođene module u Pythonu. Također ćete pronaći različite tehnike za uvoz i upotrebu prilagođenih i ugrađenih modula u Pythonu.

Video: Python moduli

Što su moduli u Pythonu?

Moduli se odnose na datoteku koja sadrži Python izraze i definicije.

Datoteka koja sadrži Python kôd, na primjer example.py:, naziva se modulom i naziv njezina modula bi bio example.

Koristimo module za razgradnju velikih programa na male upravljačke i organizirane datoteke. Nadalje, moduli omogućuju ponovnu upotrebu koda.

U modulu možemo definirati najčešće korištene funkcije i uvesti ga, umjesto da kopiramo njihove definicije u različite programe.

Stvorimo modul. Upišite sljedeće i spremite ga kao example.py.

 # Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result

Ovdje smo definirali funkciju add()unutar modula s imenom example. Funkcija uzima dva broja i vraća njihov zbroj.

Kako uvesti module u Pythonu?

Definicije unutar modula možemo uvesti u drugi modul ili interaktivni tumač u Pythonu.

Za to koristimo importključnu riječ. Da bismo uvezli naš prethodno definirani modul example, u Python odziv upišemo sljedeće.

 >>> import example

To ne uvozi imena funkcija definiranih u exampleizravno u trenutnoj tablici simbola. Tamo uvozi samo ime modula example.

Korištenjem naziva modula možemo pristupiti funkciji pomoću .operatora točke . Na primjer:

 >>> example.add(4,5.5) 9.5

Python ima mnoštvo standardnih modula. Možete pogledati cijeli popis Python standardnih modula i njihove slučajeve upotrebe. Te se datoteke nalaze u direktoriju Lib unutar mjesta na kojem ste instalirali Python.

Standardni moduli mogu se uvesti na isti način na koji uvozimo naše korisnički definirane module.

Postoje različiti načini za uvoz modula. Navedeni su u nastavku …

Izjava o uvozu Pythona

Možemo uvesti modul pomoću importizraza i pristupiti definicijama unutar njega pomoću operatora točke kao što je gore opisano. Evo primjera.

 # import statement example # to import standard module math import math print("The value of pi is", math.pi)

Kada pokrenete program, izlaz će biti:

 Vrijednost pi je 3,141592653589793

Uvoz s preimenovanjem

Modul možemo uvesti preimenovanjem na sljedeći način:

 # import module by renaming it import math as m print("The value of pi is", m.pi)

mathModul smo preimenovali u m. To nam u nekim slučajevima može uštedjeti vrijeme za tipkanje.

Imajte na umu da naziv mathnije prepoznat u našem opsegu. Stoga math.pije nevaljana i m.piispravna je implementacija.

Python iz … izjave o uvozu

Možemo uvesti određena imena iz modula bez uvoza modula u cjelini. Evo primjera.

 # import only pi from math module from math import pi print("The value of pi is", pi)

Ovdje smo piiz mathmodula uvezli samo atribut .

U takvim slučajevima ne koristimo operater točke. Također možemo uvesti više atributa kako slijedi:

 >>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045

Uvezi sva imena

Sva imena (definicije) iz modula možemo uvesti pomoću sljedeće konstrukcije:

 # import all names from the standard module math from math import * print("The value of pi is", pi)

Ovdje smo uveli sve definicije iz matematičkog modula. To uključuje sva imena vidljiva u našem opsegu, osim onih koja počinju s podvlakom (privatne definicije).

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

Pomoću dir()funkcije možemo saznati imena koja su definirana unutar modula.

Na primjer, definirali smo funkciju add()u modulu examplekoju smo imali na početku.

Možemo koristiti diru examplemodulu na sljedeći način:

 >>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')

Ovdje možemo vidjeti poredani popis imena (zajedno s add). Sva ostala imena koja počinju s podvlakom zadani su Python atributi pridruženi modulu (nisu definirani od korisnika).

Na primjer, __name__atribut sadrži ime modula.

 >>> import example >>> example.__name__ 'example'

Sva imena definirana u našem trenutnom prostoru imena mogu se pronaći pomoću dir()funkcije bez ikakvih argumenata.

 >>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')

Zanimljivi članci...