- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
import inspect
def phpformat(fmt):
return fmt.format(**inspect.getouterframes(inspect.currentframe())[1][0].f_locals)
surname = "Бонд"
name = "Джеймс"
num = 7
print(phpformat("{surname}. {name} {surname}. Агент {num:03d}."))
Это не толкьо пхп, это еще и руби, перл
Мне в треде по ссылке втирали, что в php всё удобно и ничего по 2 раза писать не надо. Вот и написал этот костыль, чтобы и в питоне не надо было.
> Оно без косяков работать будет?
Кто знает, кто знает... Всё-таки рефлексия. На каких-нибудь реализациях питона может и не взлететь. Ну и этот костыль дофига лишней работы делает - передаёт все локалки format'у, хотя большая часть нахрен не нужна.
>Ну и этот костыль дофига лишней работы делает - передаёт все локалки format'у,
Ссылки каши не просят.
Да тупо загуглил как покопаться в питоньем стеке.
> Ссылки каши не просят.
Зато построение dict'а с этим ссылками - ещё как просит. locals() вроде как дорогая функция.
По сравнению с подстановкой их в строку?
Ах да, как оно работает с локальными переменными? И с нелокальными?
Да хрен знает, может и дольше чем сама подстановка оказаться. Особенно если подставляют одну-две переменные, а локалок был десяток. А вообще - похуй. Питон же, а не сишка. Тут и без этого всё тормозное, разницы никто не заметит.
> как оно работает с локальными переменными
Только с ними и работает. А остальные тупо не видит.
Как я понял, питон добавляет константный оверхед на сишковызов, что для ксора двух интов, что для вызова операции над массивом из ляма элементов.
>Только с ними и работает. А остальные тупо не видит.
А-а, а я уже подумал ты сделал полноценный резолв.
А так?
А, вот почему в PHP у замыканий есть ключевое слово use, перечисляющее все используемые переменные! PHP писали на Питоне с использованием функции Борманда.
Вот почему нету resolve_var('a')? Или евала на худой конец.
А так?
Алсо, с глобальными переменными тоже жопа должна быть по идее. Короче, есть только один шаблонизатор, и Расмус пророк его.
http://code.activestate.com/recipes/578965-python-2-nonlocal/
Поссал на шкриптоблядь.
А почему и в третьем питоне не работает локальный импорт из программы? Т.е.
from . import хуй
джеймс кегдан.
Совсем обанимешился.
Доктор, мы его теряем.
Говносочувствие?