mihalich
Авг. 10, 2009 08:33:46
Здравствуйте!
Недавно изучаю Python (наверно тут часто звучит такая фраза).
необходимо в зависимости от значения переменной формировать название другой переменной, допустим в какой то момент начальная переменная имеет значение 1, то конечная переменная должна иметь имя <переменная>1, если начальная переменная, допустим 2, то конечная имеет вид <переменная>2.
Как такое реализовать?
goblin_maks
Авг. 10, 2009 11:42:52
не проще смотреть обьявленна <переменная>1 или <переменная>2 ?
balu
Авг. 10, 2009 11:49:46
А зачем так издеваться над переменными? Конечно, это сделать можно, например через __setatrr__, но надо иметь очень веские основания. Гораздо проще использовать словари.
regall
Авг. 10, 2009 11:53:28
Ну если уж так хочется, то можна заюзать могучий “exec”, хотя это конечно грязненько =):
>>> exec("x1 = 3")
>>> x1
3
>>>
mihalich
Авг. 10, 2009 11:55:03
ну скажем так, основания веские, потому что одна и таже часть кода используется для различных целей, и в зависимости от того в какой части код используется, должны получится различные выходные значения… Мда, наверно не сильно понятно объяснил….
Ну вобщем думаю сделать так как написал в первом сообщении, но не знаю как
mihalich
Авг. 10, 2009 11:58:17
regall
>>> exec(“x1 = 3”)
>>> x1
3
>>>
Это я уже читал, но не понял как это работает, переменной х1 назначена “3”. exec походу просто выполняет равенство…. а должно получится что 3 это новая часть переменной, т.е. как то нужно создать новую переменную в которой чатсь будет постоянной, а часть братся из х1
regall
Авг. 10, 2009 12:14:04
>>> var = 'x'
>>> for i in range(10):
... exec(var+str(i)+' = ' + str(i))
...
>>> x1
1
>>> x2
2
>>> x3
3
>>>
PooH
Авг. 10, 2009 12:33:19
mihalich
ну скажем так, основания веские, потому что одна и таже часть кода используется для различных целей, и в зависимости от того в какой части код используется, должны получится различные выходные значения… Мда, наверно не сильно понятно объяснил….
Озвучьте задачу целиком. Есть подозрение, что вы пытаетесь удалять гланды… хм… не через то отверстие
goblin_maks
Авг. 10, 2009 13:04:04
я не гуру но тож заюзал бы словари, ИМХО очень удобно ними пользоваться…
balu
Авг. 10, 2009 13:44:43
mihalich
одна и таже часть кода используется для различных целей, и в зависимости от того в какой части код используется, должны получится различные выходные значения…
Есть куча способов сделать такое и без объявления переменных в рантайме. Например, абстрактные классы или передача нужной функции в качестве параметра, или держать то, что нужно в словаре и дергать в зависимости от. Объявление переменной в рантайме неудобно использовать и еще хуже отлаживать.