Как вы видите возвращаемое значение из функции в отладчике Python без промежуточного?

PDB (и другие отладчики Python) имеют простой способ просмотра значения любой текущей переменной, просто введя ее. Однако иногда я работаю с библиотеками, которые не сохраняют свои возвращаемые значения в промежуточных переменных.

Вот пример функции:

def do_stuff(*args, **kwds): return f(*args, **kwds) 

После того, как я вернусь из f, как я могу увидеть возвращаемое значение? Я могу переписать библиотеки после того, как я загрузил их, чтобы иметь промежуточное звено:

 def do_stuff(*args, **kwds): r = f(*args, **kwds) return r 

но кажется, что должен быть лучший способ.

  • В чем разница между% r,% s и% d в python?
  • Количество отсчетов «True» в булевом тензоре
  • Как прокомментировать блок кода Python в Vim
  • Pandas: колонка Cast для строки не работает
  • Использование шрифтов в PIL без freetype
  • Повторная сборка байт-кода Python с исходным кодом?
  • Данные дампа от неправильного SQLite в Python
  • Как изменить переменные среды в python?
  • 3 Solutions collect form web for “Как вы видите возвращаемое значение из функции в отладчике Python без промежуточного?”

    Вы можете посмотреть скрытую локальную переменную __return__ .

    Если я забуду это точное имя, я исследую его:

     (Pdb) sorted(locals().keys()) ['__return__', 'xyz', ...] 

    EDIT : Мой связанный более поздний ответ с примером для __return__

    В pdb, когда функция возвращает a ->'value' , добавляется в конце строки с представлением возвращаемого значения.

    Например:

     (Pdb) s --Return-- > test.py(12)do_stuff()->'f' -> return result (Pdb) q 

    означает do_stuff() возвращаемый 'f'

    Можете ли вы объяснить больше?

    • Отладчик, вы имеете в виду, что используете регистратор? Вы переходите через среду IDE?
    • Что вы подразумеваете под «видеть возвращаемое значение»? Если вы просто хотите распечатать его …

       def do_stuff(*args, **kwds): result = f(*args, **kwds) print result return result 
    Python - лучший язык программирования в мире.