[python] omezeni globalniho slovniku
Martin B.
spooky.ln na tbs-software.com
Pátek Březen 4 08:45:24 CET 2011
Zdravím,
hraju si ted se slovníky a zde oblíbenou fcí exec() :).
Hned uvedu příklad, sice blbej ale vysvětluje vše.
script = """if prodano == 10:celkem = 90;mleko -= 1;kafe += 1;print(mleko, kafe)"""
script2 = """f = open(__file__, 'rb'); print(f.read());f.close()"""
mleko = 5
kafe = 10
def kokos():
celkem = 100
prodano = 10
print(locals())
try:
exec(script, globals(), locals())
except NameError, err:
print err
raise SystemExit
print(locals())
kokos()
1. dá se nějak definovat globalní slovník na 'safe use' hodnoty?
chci třeba jen kafe a nechci definovat jiny slovník na použití
exec(script, my_globals, my_locals) čistě povolit jen něco.
2. Zde ošetruju jen NameError při skriptu který bude obsahovat neplatnou
proměnnou.Jde i nějak jinak zjistit jestli ten python skript je
platný? teda bez syntax error? eval() mi ho hazí neustále.
Použití bude v programu kde budu globalni a lokalni hodnoty
upravovat podle udalostí skriptem uloženým v sqlite databázi.
omezeni tam chci kvuli nechtenemu spusteni treba open() fci.
Vim ze tohle slovniky neresi ale pro zacatek chci zacit s temi
promennymi :)
diky za kazde nakopnuti.
Další informace o konferenci Python