Форум сайта python.su
253
Может предложите красивое решение?
В некоторой функции ведутся расчеты, параметры хранятся в конфиг файле
Набор инструкций в виде:
def Mf(): cfg=ConfigParser.ConfigParser() cfg.read(filename) a=cfg.getint("somesection","a") b=cfg.getint("somesection","b") ................................................. z=cfg.getfloat("somesection","z")
def Mf(): insert_vars_from_config(filename,"somesection",globals())
Отредактировано doza_and (Апрель 3, 2013 15:32:08)
Офлайн
173
А окружение доверенное? Тогда может exec?
code = """ a = 1 b = 2 c = 3 """ def mf(): exec code in locals() print a mf() # 1 print a # NameError
code = """ a = 1 b = 2 c = 3 """ def mf(): a = 2 exec code in locals() print a mf() # 2
Отредактировано reclosedev (Апрель 3, 2013 18:08:07)
Офлайн
253
Локальные нужны чтобы не namespace не засорять. Переменные а не словарик чтобы короче писать формулы. Окружение доверенное. Перед exec можно сделать проверку или пускать в песочнице, поэтому доверенность не так существенна.
Отредактировано doza_and (Апрель 3, 2013 19:52:50)
Офлайн
173
В любом случае неявные переменные возможно будут смущать. Может как компромисс написать обертку ConfigParser с __getattr__(), или хранить конфигурацию в Python модулях/классах?
Отредактировано reclosedev (Апрель 3, 2013 20:41:54)
Офлайн