- 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}."))
bormand 11.05.2015 18:14 # 0
myaut 11.05.2015 18:36 # +1
bormand 11.05.2015 18:37 # +1
3_14dar 11.05.2015 20:18 # 0
Это не толкьо пхп, это еще и руби, перл
bormand 11.05.2015 20:35 # +1
Мне в треде по ссылке втирали, что в php всё удобно и ничего по 2 раза писать не надо. Вот и написал этот костыль, чтобы и в питоне не надо было.
> Оно без косяков работать будет?
Кто знает, кто знает... Всё-таки рефлексия. На каких-нибудь реализациях питона может и не взлететь. Ну и этот костыль дофига лишней работы делает - передаёт все локалки format'у, хотя большая часть нахрен не нужна.
3_14dar 11.05.2015 21:28 # 0
>Ну и этот костыль дофига лишней работы делает - передаёт все локалки format'у,
Ссылки каши не просят.
bormand 11.05.2015 21:34 # 0
Да тупо загуглил как покопаться в питоньем стеке.
> Ссылки каши не просят.
Зато построение dict'а с этим ссылками - ещё как просит. locals() вроде как дорогая функция.
3_14dar 11.05.2015 21:43 # 0
По сравнению с подстановкой их в строку?
Ах да, как оно работает с локальными переменными? И с нелокальными?
bormand 11.05.2015 21:44 # 0
Да хрен знает, может и дольше чем сама подстановка оказаться. Особенно если подставляют одну-две переменные, а локалок был десяток. А вообще - похуй. Питон же, а не сишка. Тут и без этого всё тормозное, разницы никто не заметит.
> как оно работает с локальными переменными
Только с ними и работает. А остальные тупо не видит.
3_14dar 11.05.2015 22:18 # 0
Как я понял, питон добавляет константный оверхед на сишковызов, что для ксора двух интов, что для вызова операции над массивом из ляма элементов.
>Только с ними и работает. А остальные тупо не видит.
А-а, а я уже подумал ты сделал полноценный резолв.
bormand 11.05.2015 22:25 # 0
3_14dar 11.05.2015 22:30 # +2
bormand 11.05.2015 22:34 # 0
3_14dar 12.05.2015 01:46 # 0
bormand 11.05.2015 22:39 # +1
inkanus-gray 11.05.2015 22:43 # 0
А так?
А, вот почему в PHP у замыканий есть ключевое слово use, перечисляющее все используемые переменные! PHP писали на Питоне с использованием функции Борманда.
bormand 11.05.2015 22:44 # 0
3_14dar 11.05.2015 22:55 # 0
Вот почему нету resolve_var('a')? Или евала на худой конец.
inkanus-gray 11.05.2015 23:00 # 0
3_14dar 12.05.2015 00:03 # 0
Stallman 11.05.2015 23:53 # +1
Stallman 11.05.2015 23:02 # +1
А так?
Алсо, с глобальными переменными тоже жопа должна быть по идее. Короче, есть только один шаблонизатор, и Расмус пророк его.
inkanus-gray 11.05.2015 23:07 # 0
http://code.activestate.com/recipes/578965-python-2-nonlocal/
inkanus-gray 11.05.2015 23:16 # 0
3_14dar 12.05.2015 00:04 # +1
Поссал на шкриптоблядь.
А почему и в третьем питоне не работает локальный импорт из программы? Т.е.
from . import хуй
guest 12.05.2015 00:08 # 0
3_14dar 12.05.2015 01:44 # 0
3_14dar 12.05.2015 02:05 # 0
3_14dar 12.05.2015 05:09 # 0
Fike 11.05.2015 20:56 # +3
kegdan 11.05.2015 21:33 # +2
Fike 11.05.2015 21:38 # +1
Fike 12.05.2015 01:49 # 0
джеймс кегдан.
kegdan 12.05.2015 06:27 # −1
Fike 12.05.2015 11:28 # +1
kegdan 12.05.2015 11:29 # −1
bormand 12.05.2015 12:08 # +2
Совсем обанимешился.
Доктор, мы его теряем.
Stallman 12.05.2015 13:32 # 0
kegdan 12.05.2015 14:08 # 0
inkanus-gray 12.05.2015 17:52 # +2
kegdan 12.05.2015 17:58 # 0
inkanus-gray 12.05.2015 18:02 # +2
kegdan 12.05.2015 18:58 # 0
inkanus-gray 12.05.2015 19:16 # 0
kegdan 12.05.2015 19:22 # 0
inkanus-gray 12.05.2015 19:26 # 0
Vasiliy 12.05.2015 19:29 # +1
kegdan 12.05.2015 19:53 # +1
Vasiliy 12.05.2015 20:21 # 0
Xom94ok 13.05.2015 21:05 # +2
Stallman 12.05.2015 21:32 # +1
Говносочувствие?
kegdan 12.05.2015 21:38 # 0
Stallman 12.05.2015 23:34 # 0
Lure Of Chaos 18.05.2015 09:12 # 0
1024-- 18.05.2015 10:19 # 0
1024-- 18.05.2015 10:35 # 0
bormandinho 13.01.2020 01:27 # 0