Форум сайта python.su
Ну и на кой фиг такой изврат???
Разве это удобно?
P.S. Так лучше?
Отредактировано (Май 23, 2008 23:59:50)
Офлайн
Спасибо всем за ответы , осбенно playpauseandstop :)
Ferroman
На форуме началась какая-то нездоровая тенденция “а как сделать на питоне как в перле/пхп”. Ребята это тотально неверный путь.
ZZZПолность согласен , делать кальку с одного языка на другой неправильно , я только начал изучать питон и он действительно мощнее и выразительнее php , но бывают ситуации когда ниобходима функциональность подобная “Переменные переменные” и к сожелению Питон не предостовляет удобного синтаксиса подобного пхп'шному $$var , о том когда и зачем это надо смотрите в коментах по линку.
А нахрен оно надо???
Разве это удобно?
Офлайн
То что я увидел по линку - не соответствует идеологии питона - “Simple is better than complex” и “Explicit is better than implicit”. Честно говоря, я даже не вижу, где это может быть полезно.
Ну и глобальные переменные - зло :) Хотя и иногда необходимое.
Наверняка для решения вашей задачи на питоне просто используется другой подход.
Отредактировано (Май 23, 2008 12:14:27)
Офлайн
sisqoИ правда, питон не предоставляет удобного синтаксиса для написания такого стремного кода как в комментах =)
к сожелению Питон не предостовляет удобного синтаксиса подобного пхп'шному $$var , о том когда и зачем это надо смотрите в коментах по линку.
Офлайн
slivlen+1sisqoИ правда, питон не предоставляет удобного синтаксиса для написания такого стремного кода как в комментах =)
к сожелению Питон не предостовляет удобного синтаксиса подобного пхп'шному $$var , о том когда и зачем это надо смотрите в коментах по линку.
Офлайн
Забавно: я заменил ‘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
Отредактировано (Май 26, 2008 18:31:23)
Офлайн
Ну что тут не понятного? Если запихнул переменную с кувырком, через голову, точно также ее и получай.
print locals()
Питоновский парсер, однако, всегда будет воспринимать anther и var, как отдельные переменные. Естесственно, возникнет вопрос - зачем тогда вообще июзать locals? И какой вообще смысел от var и another var? Но это уже тебе решать, кстати, следуя по пути отдаления от идиомы KISS, попробуй воспользоватья monkey patching - покури parser модуль ;)
Офлайн
Я прочитал в английской вики что такое 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"'
Офлайн
В Питоне можно делать многое. Почти все. Но это не значит, что таким путем следует пользоваться направо и налево.
“Человек, получивший в руки молоток, смотрит на мир как на большой гвоздь.”
Не надо… Каждому инструменту - свое предназначение…
Есть и более элегантные пути решения проблемы.
Офлайн
Leronа ConfigParser для кого сделали?!
вот я что придумал: читаем файлег с данными и генерим переменые
Офлайн