f_back : <frame object at 0x812383c> 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

f_back : <frame object at 0x812383c>

Поиск

import inspect

 

def f():

 

fr = inspect.currentframe() for a in dir(fr):

 

if a[:2] != "__":

 

print a, ":", str(getattr(fr, a))[:70]

 

f()

 

В результате получается

 

f_back : <frame object at 0x812383c>

 

f_builtins : {'help': Type help() for interactive help, or help(object) for help ab

 

f_code : <code object f at 0x401d83a0, file "<stdin>", line 11> f_exc_traceback : None

f_exc_type : None

f_exc_value : None

 

f_globals : {'f': <function f at 0x401e0454>, '__builtins__': <module '__builtin__

 

f_lasti : 68 f_lineno : 16

 

f_locals : {'a': 'f_locals', 'fr': <frame object at 0x813c34c>} f_restricted : 0

 

f_trace : None

 

Здесь f_back-предыдущий фрейм исполнения(вызвавший данный фрейм),f_builtins-пространство встроенных имен,как его видно из данного фрейма,f_globals-пространство глобальных имен,f_locals-пространство локальных имен,f_code-кодовый объект(в данном случае-байт-код функции f()),f_lasti-индекс последней


 


выполнявшейся инструкции байт-кода,f_trace-функция трассировки для данного фрейма(или None),f_lineno-текущая строка исходного кода,f_restricted-признак выполнения в ограничительном режиме.

 

Получить информацию о стеке интерпретатора можно с помощью функции inspect.stack().Она возвращает список кортежей,в которых есть следующие элементы:

 

(фрейм-объект, имя_файла, строка_в_файле, имя_функции, список_строк_исходного_кода, номер_строки_в_коде)

 

 

Трассировочные объекты также играют важную роль в интроспективных возможностях языкаPython:с их помощью можно отследить место возбуждения исключения и обработать его требуемым образом.Для работы с трассировками предусмотрен даже специальный модуль-traceback.

 

Трассировочный объект представляет содержимое стека исполнения от места возбуждения исключения до места его обработки.В обработчике исключений связанный с исключением трассировочный объект доступен посредством функции sys.exc_info()(это третий элемент возвращаемого данной функцией кортежа).

 

Трассировочный объект имеет следующие атрибуты:

 

· tb_frame Фрейм исполнения текущего уровня.

 

· tb_lineno и tb_lasti Номер строки и инструкции,где было возбуждено исключение.

 

· tb_next Следующий уровень стека(другой трассировочный объект).

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 55; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.009 с.)