[python] volání funkce, kde název je uložen v proměnné

Hynek Fabian hynek.fabian na firma.seznam.cz
Středa Říjen 9 16:22:37 CEST 2013


Pokud mas v one promene referenci, pak proste pridanim zavorek:

def foo(): pass
bar = foo
bar() # zavola foo()

Jestli mas v promenne retezec s nazvem, tak je to komplikovanejsi a
optimalni podoba zavisi odkud tu funkci chces. Zaklad je dostat se na
jmenny prostor, odtud ziskas referenci a kdyz mas referenci staci zase
jen doplnit zavorky.  Kdyz by to bylo z nejakeho modulu:

import foo
s = "bar"
fce = getattr(foo, s) # reference na funkci bar
fce()

Kdyz by to bylo z aktualniho modulu tak nepotrebujes getattr() a sahnes
si pro referenci primo do locals().

Parametry v obou pripadech predas obvyklym zpusobem. Jestli mas
parametry ulozene nekde bokem, muzes kontejnerove promenne (tuple, list,
dict) rozbalit operatorem hvezdicky:

params = "foo", 42
fce("bar", *params) # zavola fce("bar", "foo", 42)

Slovniky umi totez pro keyword parametry, ale to uz si najdi v rtfm.

On 10/09/13 15:45, bertikster na gmail.com wrote:
> Mám název funkce v proměnné, tak bych se chtěl zeptat jak tu funkci
> můžu zavolat? jde mi o to abych dále té funkci mohl dát další
> parametry _______________________________________________ Python
> mailing list Python na py.cz http://www.py.cz/mailman/listinfo/python
> 



Další informace o konferenci Python