Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: MarkyMark 18. 08. 2015, 23:06:16

Název: Jak spustit příkaz uložený v poli
Přispěvatel: MarkyMark 18. 08. 2015, 23:06:16
Dobry den. Narazil jsem na potíže v pythonu a nemůžu nikde najít nějaké řešení. Mám pole a v poli jsou příkazy s parametry, příklad:
Kód: [Vybrat]
arr = ['delete_file(path, name)'] Když ale zadám arr[0], tak se příkaz nespustí. Pomůže mi prosím někdo zkušený ? Děkuji.
Název: Re:Jak spustit příkaz uložený v poli
Přispěvatel: TiB 18. 08. 2015, 23:13:29
Nejsem si jisty, ze te otazce uplne rozumim.  ;)
Název: Re:Jak spustit příkaz uložený v poli
Přispěvatel: MarkyMark 18. 08. 2015, 23:19:36
Mám funkci
Kód: [Vybrat]
def delete_file(path, name):
   pass

pak mám seznam
Kód: [Vybrat]
myList = ['delete_file('/home', 'test.txt')']
no a potřebuji spustit funkci jež je v tom seznamu včetně parametrů
Kód: [Vybrat]
myList[0]
Je to lépe k pochopení ?
Název: Re:Jak spustit příkaz uložený v poli
Přispěvatel: TiB 18. 08. 2015, 23:25:57
Mám funkci
Kód: [Vybrat]
def delete_file(path, name):
   pass

pak mám seznam
Kód: [Vybrat]
myList = ['delete_file('/home', 'test.txt')']
no a potřebuji spustit funkci jež je v tom seznamu včetně parametrů
Kód: [Vybrat]
myList[0]
Je to lépe k pochopení ?


To bych imho udelal krapet jinak. Proc to mit jako retezec. Neco ve smyslu.
import functools

myList = [functools.partial(delete_file, '/home', 'test.txt')]
myList[0]

Pokud to chces mit vylozene jako retezec, tak pak eval. To je ale celkem nehezke a myslim zbytecne.

Název: Re:Jak spustit příkaz uložený v poli
Přispěvatel: TiB 18. 08. 2015, 23:27:45
Tedy exec jsem chtel napsat. Ale to bych stejne v tomhle pripade nedelal.  ;)
Název: Re:Jak spustit příkaz uložený v poli
Přispěvatel: ByCzech 18. 08. 2015, 23:35:44
Dobry den. Narazil jsem na potíže v pythonu a nemůžu nikde najít nějaké řešení. Mám pole a v poli jsou příkazy s parametry, příklad:
Kód: [Vybrat]
arr = ['delete_file(path, name)'] Když ale zadám arr[0], tak se příkaz nespustí. Pomůže mi prosím někdo zkušený ? Děkuji.

Proč by se taky měl spouštět, že? Když to má vrátit hodnotu z toho indexu ;)... (btw. Python pole nemá ;) )

eval(myList[0])

Ale jak už tady padlo, je to nehezká technika, kterou bych nedoporučil, pokud k tomu není extra důvod. A z toho co vidím, k tomu důvod není.