Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2016 18:06:28

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Exec в проектах

Добрый день.

Подскажите, стоит ли использовать подобные связки?

 for a in range(1, N):
    exec("""l_hid{0} = lasagne.layers.DenseLayer(
    l_hid{1}, num_units={2},
    nonlinearity=lasagne.nonlinearities.{3},
    W=lasagne.init.Constant(0.5))""".format(a, a-1, b, c))
Основной акцент на exec. При динамическом создании переменных (либо как в примере экземпляров класса), exec используют или есть альтернатива, или если возникает такая необходимость то неверная архитектура в проекте?

Отредактировано noob_saibot (Ноя. 15, 2016 07:10:07)

Офлайн

#2 Ноя. 14, 2016 19:34:45

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Exec в проектах

noob_saibot
есть альтернатива
да есть - обращаться к словарям описания переменных с использованием locals, globals.



Офлайн

#3 Ноя. 14, 2016 19:52:51

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

Exec в проектах

doza_and
да есть - обращаться к словарям описания переменных с использованием locals, globals.

Отчасти присоединюсь к вопросу, насколько это юзабельно и где может применяться?

Не припомню чтоб в других языках переменные можно было создавать на ходу…

Офлайн

#4 Ноя. 15, 2016 07:14:13

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Exec в проектах

doza_and
да есть - обращаться к словарям описания переменных с использованием locals, globals.
Я кажется не то в гугле ищу, будьте любезны киньте в меня ссылкой.

Офлайн

#6 Ноя. 15, 2016 07:33:13

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Exec в проектах

doza_and
https://docs.python.org/3/library/functions.html#globalshttps://docs.python.org/3/library/functions.html#localshttps://docs.python.org/3/library/stdtypes.html#object.__dict__
Окей, спрошу по другому, каким образом - словарям описания переменных с использованием locals, globals. - мне поможет решить вопрос с динамическим созданием переменных.

PS. Я немного код подправил в теме.

Отредактировано noob_saibot (Ноя. 15, 2016 07:40:45)

Офлайн

#7 Ноя. 15, 2016 07:40:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Exec в проектах

noob_saibot
Окей, спрошу по другому, каким образом - словарям описания переменных с использованием locals, globals. - мне поможет решить вопрос с динамическим созданием переменных.
Динамически создавать глобальные переменные не следует! Если вам это понадобилось, значит вы плохо продумали структуру вашей программы. Создавайте (если уж так хочется) атрибуты классов или объектов.



Офлайн

#8 Ноя. 15, 2016 07:51:07

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Exec в проектах

FishHook
Спасибо понял.

Офлайн

#9 Ноя. 15, 2016 07:55:49

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Exec в проектах

? Динамические создадутся x0, x1, etc, или я что-то не понял?

 for k in range(10):
    locals()['x%s' % k] = YourClass(x=getattr(something,'attr%s'%k, alternative_value), y=k)

Офлайн

#10 Ноя. 15, 2016 08:01:29

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Exec в проектах

scidam
? Динамические создадутся x0, x1, etc, или я что-то не понял?
Да, спасибо.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version