Уведомления

Группа в Telegram: @pythonsu

#1 Май 22, 2008 19:38:48

sisqo
От:
Зарегистрирован: 2008-05-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Аналог PHP $$variable

Собственно сабж , возможно ли в питоне “Переменные переменных” , то есть, имя переменной, которое может быть определено и изменено динамически аналогично PHP'шному Переменные переменные



Офлайн

#2 Май 22, 2008 19:47:48

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Аналог PHP $$variable

Не уверен что понял что такое ‘переменная переменных’. У меня мозг в рекурсию входит при попытке осознать языковую конструкцию: ‘Переменная переменная берет значение переменной и рассматривает его как имя переменной.’
На ум приходит только:
'Я хочу быть как солнце, сидя в душной ПЕЛЬМЕННОЙ'



Отредактировано (Май 22, 2008 20:00:56)

Офлайн

#3 Май 22, 2008 19:53:35

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Аналог PHP $$variable

Если субж, то:
>>> a = 1
>>> print globals()
1



Офлайн

#4 Май 22, 2008 19:54:24

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Аналог PHP $$variable

Можно использовать функцию eval().
Вот пример:

a= 23
b = 'a'
print eval(b)
----------------
23
Но этим дело не ограничивается, в функцию eval() можно передать целое выражение:

a= 23
b = 'a + 2'
print eval(b)
----------------
25



Отредактировано (Май 22, 2008 19:56:18)

Офлайн

#5 Май 22, 2008 19:57:04

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Аналог PHP $$variable

globals - для глобальных переменных. Внутри функции следует использовать locals():

def u():
a = 23
locals()['a']
u()



Отредактировано (Май 22, 2008 19:57:59)

Офлайн

#6 Май 22, 2008 21:35:05

playpauseandstop
От:
Зарегистрирован: 2007-10-31
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Аналог PHP $$variable

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!
так что ничего сложного в переменных переменных нет )))



Офлайн

#7 Май 22, 2008 22:14:25

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Аналог PHP $$variable

playpauseandstop
Ну почему, ZAN как раз все как надо подсказал.



Офлайн

#8 Май 22, 2008 22:47:56

playpauseandstop
От:
Зарегистрирован: 2007-10-31
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Аналог PHP $$variable

shiza
слишком неочевидно, имо



Офлайн

#9 Май 22, 2008 23:20:01

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Аналог PHP $$variable

Боюсь что покажусь не оригинальным, но python и php - разные языки. С разным синтаксисом и идеологией. С разным подходом к программированию.
На форуме началась какая-то нездоровая тенденция “а как сделать на питоне как в перле/пхп”. Ребята это тотально неверный путь. Делать кальки с одних язиков на другие - все равно, что переводить стихи с разных языков. А то ведь читаешь такой пост и все норовит написать - “нравится как в пхп - так и пиши на пхп, чего людям голову морочить”. Понятно что хочется использовать предыдущий опыт, но не подгоняя же один язык под другой.
Прошу прощения за злостный оффтоп - но мне показалось что таки просьбы как-то последнее время сильно участились, и я так погляжу, даже поощряются….

Офлайн

#10 Май 22, 2008 23:55:20

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Аналог PHP $$variable

Нельзя сразу войти в новое целиком, отбросив все старое.
Уже после вхождения, ПОСТЕПЕННО избавляешься от старого и приобретаешь новое.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version