Форум сайта python.su
Здравствуйте!
Недавно изучаю Python (наверно тут часто звучит такая фраза).
необходимо в зависимости от значения переменной формировать название другой переменной, допустим в какой то момент начальная переменная имеет значение 1, то конечная переменная должна иметь имя <переменная>1, если начальная переменная, допустим 2, то конечная имеет вид <переменная>2.
Как такое реализовать?
Офлайн
не проще смотреть обьявленна <переменная>1 или <переменная>2 ?
Офлайн
А зачем так издеваться над переменными? Конечно, это сделать можно, например через __setatrr__, но надо иметь очень веские основания. Гораздо проще использовать словари.
Офлайн
Ну если уж так хочется, то можна заюзать могучий “exec”, хотя это конечно грязненько =):
>>> exec("x1 = 3")
>>> x1
3
>>>
Офлайн
ну скажем так, основания веские, потому что одна и таже часть кода используется для различных целей, и в зависимости от того в какой части код используется, должны получится различные выходные значения… Мда, наверно не сильно понятно объяснил….
Ну вобщем думаю сделать так как написал в первом сообщении, но не знаю как
Офлайн
regallЭто я уже читал, но не понял как это работает, переменной х1 назначена “3”. exec походу просто выполняет равенство…. а должно получится что 3 это новая часть переменной, т.е. как то нужно создать новую переменную в которой чатсь будет постоянной, а часть братся из х1
>>> exec(“x1 = 3”)
>>> x1
3
>>>
Офлайн
>>> var = 'x'
>>> for i in range(10):
... exec(var+str(i)+' = ' + str(i))
...
>>> x1
1
>>> x2
2
>>> x3
3
>>>
Офлайн
mihalichОзвучьте задачу целиком. Есть подозрение, что вы пытаетесь удалять гланды… хм… не через то отверстие
ну скажем так, основания веские, потому что одна и таже часть кода используется для различных целей, и в зависимости от того в какой части код используется, должны получится различные выходные значения… Мда, наверно не сильно понятно объяснил….
Офлайн
я не гуру но тож заюзал бы словари, ИМХО очень удобно ними пользоваться…
Офлайн
mihalichЕсть куча способов сделать такое и без объявления переменных в рантайме. Например, абстрактные классы или передача нужной функции в качестве параметра, или держать то, что нужно в словаре и дергать в зависимости от. Объявление переменной в рантайме неудобно использовать и еще хуже отлаживать.
одна и таже часть кода используется для различных целей, и в зависимости от того в какой части код используется, должны получится различные выходные значения…
Офлайн