Kako pišemo module
9. Kako pišemo module#
Napišimo program, ki bo vseboval konstanto odgovor, ki bo imela
vrednost 42, in funkcijo, ki računa Fibonaccijeva števila.
odgovor = 42
def fibonacci(n):
a = b = 0
for i in range(n):
a, b = b, a+b
return a
Program shranimo pod imenom fibo.py.
To je to. V drugem programu lahko rečemo
import fibo
print("Odgovor je", fibo.odgovor)
print("Deseto Fibonaccijevo število pa je", fibo.fibonacci(10))
Tudi vse ostale finte, na primer, from fibo import odgovor, delujejo.
Modul ni nič drugega kot program, ki ga uvozimo.
Tudi vsi drugi programi, ki ste jih napisali doslej, so hkrati moduli:
lahko jih uvozite. Pazite le na tole: ko modul uvozimo, se ta v resnici
izvede, čisto tako, kot bi se izvajal program. Vse, kar se v tem
programu-modulu definira, ostane definirano in se nahaja v modulovem
imenskem prostoru. Vendar se zgodi tudi vse ostalo, kar piše v modulu:
če pri izvajanju naleti na print(“Foo”) se bo ob uvozu
modula izpisalo Foo. Če program-modul vsebuje klic funkcije (in ne le
definicij), se bo ta funkcija poklicala tudi ob uvozu.
Kje Python išče module? Navadno v trenutnem direktoriju, poleg tega pa
še v drugih. Na Windowsih v, recimo, c:-packages. Več o tem
si lahko preberete v dokumentaciji.
Tudi sicer ne bomo rinili prav globoko v module, samo še eno stvar omenimo, da vas ne bo presenetila. Ko boste prvič uvozili modul, se bo poleg datoteke s končnico .py pojavila še ena, z enakim imenom, a končnico .pyc. Python si vanjo “prevede” (pravzaprav bi smeli pisati brez narekovajev, temu se v resnici reče prevajanje) v obliko, v kateri ga bo lahko naslednjič hitreje uvozil. Pri manjših modulih se to ne pozna, pri velikem številu velikih modulov pa. Če vas moti, jo lahko pobrišete; drugič se bo pač spet pojavila ponovno.