Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 10, 2009 08:33:46

mihalich
От:
Зарегистрирован: 2009-08-10
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамические переменные

Здравствуйте!
Недавно изучаю Python (наверно тут часто звучит такая фраза).

необходимо в зависимости от значения переменной формировать название другой переменной, допустим в какой то момент начальная переменная имеет значение 1, то конечная переменная должна иметь имя <переменная>1, если начальная переменная, допустим 2, то конечная имеет вид <переменная>2.

Как такое реализовать?



Офлайн

#2 Авг. 10, 2009 11:42:52

goblin_maks
От:
Зарегистрирован: 2008-12-10
Сообщения: 110
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамические переменные

не проще смотреть обьявленна <переменная>1 или <переменная>2 ?



Офлайн

#3 Авг. 10, 2009 11:49:46

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамические переменные

А зачем так издеваться над переменными? Конечно, это сделать можно, например через __setatrr__, но надо иметь очень веские основания. Гораздо проще использовать словари.



Офлайн

#4 Авг. 10, 2009 11:53:28

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Динамические переменные

Ну если уж так хочется, то можна заюзать могучий “exec”, хотя это конечно грязненько =):

>>> exec("x1 = 3")
>>> x1
3
>>>



Офлайн

#5 Авг. 10, 2009 11:55:03

mihalich
От:
Зарегистрирован: 2009-08-10
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамические переменные

ну скажем так, основания веские, потому что одна и таже часть кода используется для различных целей, и в зависимости от того в какой части код используется, должны получится различные выходные значения… Мда, наверно не сильно понятно объяснил….

Ну вобщем думаю сделать так как написал в первом сообщении, но не знаю как



Офлайн

#6 Авг. 10, 2009 11:58:17

mihalich
От:
Зарегистрирован: 2009-08-10
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамические переменные

regall
>>> exec(“x1 = 3”)
>>> x1
3
>>>
Это я уже читал, но не понял как это работает, переменной х1 назначена “3”. exec походу просто выполняет равенство…. а должно получится что 3 это новая часть переменной, т.е. как то нужно создать новую переменную в которой чатсь будет постоянной, а часть братся из х1



Офлайн

#7 Авг. 10, 2009 12:14:04

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Динамические переменные

>>> var = 'x'
>>> for i in range(10):
... exec(var+str(i)+' = ' + str(i))
...
>>> x1
1
>>> x2
2
>>> x3
3
>>>



Офлайн

#8 Авг. 10, 2009 12:33:19

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Динамические переменные

mihalich
ну скажем так, основания веские, потому что одна и таже часть кода используется для различных целей, и в зависимости от того в какой части код используется, должны получится различные выходные значения… Мда, наверно не сильно понятно объяснил….
Озвучьте задачу целиком. Есть подозрение, что вы пытаетесь удалять гланды… хм… не через то отверстие



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#9 Авг. 10, 2009 13:04:04

goblin_maks
От:
Зарегистрирован: 2008-12-10
Сообщения: 110
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамические переменные

я не гуру но тож заюзал бы словари, ИМХО очень удобно ними пользоваться…



Офлайн

#10 Авг. 10, 2009 13:44:43

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамические переменные

mihalich
одна и таже часть кода используется для различных целей, и в зависимости от того в какой части код используется, должны получится различные выходные значения…
Есть куча способов сделать такое и без объявления переменных в рантайме. Например, абстрактные классы или передача нужной функции в качестве параметра, или держать то, что нужно в словаре и дергать в зависимости от. Объявление переменной в рантайме неудобно использовать и еще хуже отлаживать.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version