Portál AbcLinuxu, 14. května 2025 00:00
import modul def fce(): print "ok"
fce() // neprovede seJe tedy možné přistupovat z modulů k hlavnímu souboru?
Je tedy možné přistupovat z modulů k hlavnímu souboru?IMHO asi ne. Ono moduly by měli obsahovat určité fumkce, které plánuješ používat ve více souborech a prpto jsou umístěny jako modul. Takže by čistě teoreticky moduly něměli přistupovat k hlavnímu souboru, ale hlavní soubor by měl vše propojovat. Takže hlavní soubor bude využívat funkce z různých modulů a ne naopak. Takže pokud modul obsahuje funkci, která by měla chtít přistupovat do hlavního souboru, tak je to špatně navržený, a ta funkce by měla být přímo v tom hlavním souboru.
Takže když mám v hlavním souboru napsané GUI a v modulu mám fci, která něco časově náročného provádí a chci průběh té fce zobrazovat v GUI pomocí progressbaru tak musím tu funkci vložit do hlavního souboru? Kdyby aspoň funkce uměly vracet hodnoty nějak průběžne, tak bych vědělZrovny v pythonu umí (yield). Každopádně, toto se vždy (nezávisle na jazyce) řeší pomocí callbacku. Obecně platí: pokud potřebuješ takovéto zpřeházení závislostí, tak to máš špatně navržené.
import modul_2
.import modul_1
.import modul2 def fcemodulu1: print "Ja sem modul 1!" # tady a takhle se zavola funkce z modulu 2 modul2.fcemodulu2()modul2:
import modul1 def fcemodulu2: print "Ja sem modul 2!" # tady a takhle se zavola funkce z modulu 1 modul1.fcemodulu1()Zrovna tak jde z "podřízených" modulů volat funkce z "hlavního" modulu. Pokud se hlavní modul jmenuje
hlavnimodul
a v něm bude nějaká funkce, tak můžu v "podřízeném" modulu provést:
import hlavnimodul hlavnimodul.fce()
#!/usr/bin/env python def funkce(x): return x + 1 import modul modul.callfunc(funkce, 5)Modul:
#!/usr/bin/env python def callfunc(func, x): print func(x)Jestliže děláš nějaké numerické výpočty, tak se koukni na moduly scipy a numpy. Tam jsou callbacky celkem běžnou záležitostí.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.