Найти - Пользователи
Полная версия: Аналог PHP $$variable
Начало » Python для экспертов » Аналог PHP $$variable
1 2 3
sisqo
Собственно сабж , возможно ли в питоне “Переменные переменных” , то есть, имя переменной, которое может быть определено и изменено динамически аналогично PHP'шному Переменные переменные
shiza
Не уверен что понял что такое ‘переменная переменных’. У меня мозг в рекурсию входит при попытке осознать языковую конструкцию: ‘Переменная переменная берет значение переменной и рассматривает его как имя переменной.’
На ум приходит только:
'Я хочу быть как солнце, сидя в душной ПЕЛЬМЕННОЙ'
ZAN
Если субж, то:
>>> a = 1
>>> print globals()
1
shiza
Можно использовать функцию eval().
Вот пример:
a= 23
b = 'a'
print eval(b)
----------------
23
Но этим дело не ограничивается, в функцию eval() можно передать целое выражение:

a= 23
b = 'a + 2'
print eval(b)
----------------
25
shiza
globals - для глобальных переменных. Внутри функции следует использовать locals():

def u():
a = 23
locals()['a']
u()
playpauseandstop
ZAN,
shiza
вы вообще не о том советуете sisqo

поясню…

есть пхп-код:
<?php
$var = 'another_var'
$$var = 'win!'
echo 'Var: ' ,  $var ,  ', Another var: ' , $another_var , PHP_EOL;
?>
он выведет:
Var: another_var, Another var: win!
т.е. создается переменная название которой содержится в другой переменной…

а в питоне такие же пироги решаются при помощи, как вы правильно заметили, globals и locals, только в чуток другом ключе:
In [1]: var = 'another_var'
In [2]: locals()[var] = 'win!'
In [3]: print 'Var: ' , var , ', Another var: ' , another_var
Var:  another_var , Another var:  win!
так что ничего сложного в переменных переменных нет )))
shiza
playpauseandstop
Ну почему, ZAN как раз все как надо подсказал.
playpauseandstop
shiza
слишком неочевидно, имо
Ferroman
Боюсь что покажусь не оригинальным, но python и php - разные языки. С разным синтаксисом и идеологией. С разным подходом к программированию.
На форуме началась какая-то нездоровая тенденция “а как сделать на питоне как в перле/пхп”. Ребята это тотально неверный путь. Делать кальки с одних язиков на другие - все равно, что переводить стихи с разных языков. А то ведь читаешь такой пост и все норовит написать - “нравится как в пхп - так и пиши на пхп, чего людям голову морочить”. Понятно что хочется использовать предыдущий опыт, но не подгоняя же один язык под другой.
Прошу прощения за злостный оффтоп - но мне показалось что таки просьбы как-то последнее время сильно участились, и я так погляжу, даже поощряются….
shiza
Нельзя сразу войти в новое целиком, отбросив все старое.
Уже после вхождения, ПОСТЕПЕННО избавляешься от старого и приобретаешь новое.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB