Найти - Пользователи
Полная версия: Аналог PHP $$variable
Начало » Python для экспертов » Аналог PHP $$variable
1 2 3
ZZZ
Ну и на кой фиг такой изврат???
Разве это удобно?

P.S. Так лучше?
sisqo
Спасибо всем за ответы , осбенно playpauseandstop :)

Ferroman
На форуме началась какая-то нездоровая тенденция “а как сделать на питоне как в перле/пхп”. Ребята это тотально неверный путь.
ZZZ
А нахрен оно надо???
Разве это удобно?
Полность согласен , делать кальку с одного языка на другой неправильно , я только начал изучать питон и он действительно мощнее и выразительнее php , но бывают ситуации когда ниобходима функциональность подобная “Переменные переменные” и к сожелению Питон не предостовляет удобного синтаксиса подобного пхп'шному $$var , о том когда и зачем это надо смотрите в коментах по линку.
Ferroman
То что я увидел по линку - не соответствует идеологии питона - “Simple is better than complex” и “Explicit is better than implicit”. Честно говоря, я даже не вижу, где это может быть полезно.
Ну и глобальные переменные - зло :) Хотя и иногда необходимое.
Наверняка для решения вашей задачи на питоне просто используется другой подход.
slivlen
sisqo
к сожелению Питон не предостовляет удобного синтаксиса подобного пхп'шному $$var , о том когда и зачем это надо смотрите в коментах по линку.
И правда, питон не предоставляет удобного синтаксиса для написания такого стремного кода как в комментах =)
bialix
slivlen
sisqo
к сожелению Питон не предостовляет удобного синтаксиса подобного пхп'шному $$var , о том когда и зачем это надо смотрите в коментах по линку.
И правда, питон не предоставляет удобного синтаксиса для написания такого стремного кода как в комментах =)
+1
Leron
Забавно: я заменил ‘another_var’ на ‘another var’ и присвоение произошло:
>>> var = 'another var'
>>> locals()[var] = 'win!'
>>> locals()
{'__builtins__': <module '__builtin__' (built-in)>, '__doc__': None, 'var': 'another var', '__name__': '__main__', 'another var': 'win!'}
>>> another var
SyntaxError: invalid syntax
>>> eval("another var")

Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
eval("another var")
File "<string>", line 1
another var
^
SyntaxError: unexpected EOF while parsing
>>> eval('another var')

Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
eval('another var')
File "<string>", line 1
another var
^
SyntaxError: unexpected EOF while parsing
У меня вопрос - можно ли как нибуть получить значение этой переменной в переменной :lol: ?
ZAN
Ну что тут не понятного? Если запихнул переменную с кувырком, через голову, точно также ее и получай.
print locals()
Питоновский парсер, однако, всегда будет воспринимать anther и var, как отдельные переменные. Естесственно, возникнет вопрос - зачем тогда вообще июзать locals? И какой вообще смысел от var и another var? Но это уже тебе решать, кстати, следуя по пути отдаления от идиомы KISS, попробуй воспользоватья monkey patching - покури parser модуль ;)
Leron
Я прочитал в английской вики что такое monkey patching. смяшно: мну великий хакер хакнет python :lol: . Я раньше вообще не знал что это возможно :O . Ладно по теме могу сказать что переменная переменной наверно может быть полезной штукой, вот я что придумал: читаем файлег с данными и генерим переменые:
Default.txt
DefValue0=4
DefValue1=4
DefValue2="Empty"
>>> f = open("C:\Python25\default.txt")
>>> DefVal = 0
>>> for val in f:
val = val.split("=")
DefVal = val[0].split()
locals()[DefVal] = val[1].split()
>>> DefValue2
'"Empty"'
Андрей Светлов
В Питоне можно делать многое. Почти все. Но это не значит, что таким путем следует пользоваться направо и налево.
“Человек, получивший в руки молоток, смотрит на мир как на большой гвоздь.”
Не надо… Каждому инструменту - свое предназначение…
Есть и более элегантные пути решения проблемы.
playpauseandstop
Leron
вот я что придумал: читаем файлег с данными и генерим переменые
а ConfigParser для кого сделали?!
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