Комментарии 4
Интересная статья, спасибо!
Но кажется у вас в процедуре corrupted_noosphere (которая в broken_evil_force) закралась мелкая ошибка:
в строке «frame = sys._getframe().f_back» лишнее обращение к полю f_back.
Но кажется у вас в процедуре corrupted_noosphere (которая в broken_evil_force) закралась мелкая ошибка:
в строке «frame = sys._getframe().f_back» лишнее обращение к полю f_back.
Спасибо за статью!
Наверное самый адовый ад с питоньим стеком из того, что я видел, вытворяют в Jinja2 для получения более понятных стек-трейсов при ошибках в шаблонах: github.com/mitsuhiko/jinja2/blob/master/jinja2/debug.py.
Например, название функции `_init_ugly_crap()`, уже намекает. :)
Наверное самый адовый ад с питоньим стеком из того, что я видел, вытворяют в Jinja2 для получения более понятных стек-трейсов при ошибках в шаблонах: github.com/mitsuhiko/jinja2/blob/master/jinja2/debug.py.
Например, название функции `_init_ugly_crap()`, уже намекает. :)
Спасибо, интересный пример.
Хотя с Jinja2 и имел дело, не думал, что там ненатуральный traceback.
А еще благодаря вашему комментарию я вспомнил две вещи, о которых забыл. когда писал статью.
1) Многострочные лямбда-функции (автор так это назвал, но реально речь у него о блоках как в Ruby)
billmill.org/multi_line_lambdas.html
2) Оптимизация хвостовой рекурсии.
code.activestate.com/recipes/474088/
Но это явно не лучший подход. Хотя рекурсивные вызовы не создаются лишние, try/except тоже дорогое удовольствие.
Хотя с Jinja2 и имел дело, не думал, что там ненатуральный traceback.
А еще благодаря вашему комментарию я вспомнил две вещи, о которых забыл. когда писал статью.
1) Многострочные лямбда-функции (автор так это назвал, но реально речь у него о блоках как в Ruby)
billmill.org/multi_line_lambdas.html
2) Оптимизация хвостовой рекурсии.
code.activestate.com/recipes/474088/
Но это явно не лучший подход. Хотя рекурсивные вызовы не создаются лишние, try/except тоже дорогое удовольствие.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Frame object в Python. Что с ним можно, а что нельзя (в production и другом приличном месте) делать