How do you see the return value from a function in the Python debugger, without an intermediate?

后端 未结 3 847
猫巷女王i
猫巷女王i 2021-02-05 11:30

PDB (and other Python debuggers) have a simple way of viewing the value of any current variable, just by typing it in. However, sometimes I work with libraries that don\'t store

相关标签:
3条回答
  • 2021-02-05 11:47

    You can look into a hidden __return__ local variable.

    If I would forget it's exact name, I explore it by this:

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

    EDIT: Related later answer with example of debugging with __return__

    0 讨论(0)
  • 2021-02-05 11:57

    In pdb, when the function returns a ->'value' is added at the end of the line with the representation of the returned value.

    For example:

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

    means do_stuff() returned 'f'

    0 讨论(0)
  • 2021-02-05 12:01

    Can you explain more?

    • By debugger, do you mean you are using a logger? Are you stepping through with an IDE?
    • What do you mean by "see the return value"? If you just want to print it...

      def do_stuff(*args, **kwds):
          result = f(*args, **kwds)
          print result
          return result
      
    0 讨论(0)
提交回复
热议问题