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 import
ključ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 example
izravno 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 import
izraza 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)
math
Modul smo preimenovali u m
. To nam u nekim slučajevima može uštedjeti vrijeme za tipkanje.
Imajte na umu da naziv math
nije prepoznat u našem opsegu. Stoga math.pi
je nevaljana i m.pi
ispravna 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 pi
iz math
modula 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 example
koju smo imali na početku.
Možemo koristiti dir
u example
modulu 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')