2012-06-05 13 views
11

PDB(およびその他のPythonデバッガ)は、現在の変数の値を入力するだけで簡単に値を見ることができます。しかし、時には、戻り値を中間変数に格納しないライブラリで作業することもあります。私は、戻り値を参照してくださいどのように、Fから復帰した後Pythonデバッガの関数からの戻り値は、中間体なしでどのように見えますか?

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

は、ここで例の機能ですか?私はそれらをダウンロードした後、私は中間を持っているライブラリを書き換えることができます:

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

が、もっと良い方法があるはずのように思えます。

+2

と答える私の関連:

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

EDIT 'do_stuff'の戻り値でもあります。あなたはそれを見るか、 'r = f(...)のようなものに変更することができます。プリント(r); return r' - あなたの質問がそれより複雑だと思う。明確にできますか? – jedwards

+0

これは実際には主な質問です。中間体なしでその価値観を見る方法はありますか? – Chris

+1

PyCharmでこの機能を利用するにはhttps://youtrack.jetbrains.com/issue/PY-13540に投票してください –

答えて

9

を返されたことを意味します。

私はそれが正確な名前だ忘れてしまった場合、私はでそれを探る:それは、 `F`意志の戻り値を現状では、後にexample for __return__

+0

クール、ありがとう!それはEclipseで動作するかどうかを確認する必要がありますが、私はそれがデフォルトでPDBを使用すると思う... – Chris

+1

私はまた、pdbコマンド 'retval'を見つけましたが、私は" __return__ "はより普遍的なとより有用な場合、詳細に印刷することができない複雑なオブジェクト。 – hynekcer

1

もっと説明できますか?

  • デバッガでは、ロガーを使用しているのですか?あなたはIDEでステップアップしていますか?
  • 「戻り値を確認する」とはどういう意味ですか?あなただけ... PDBでは

    def do_stuff(*args, **kwds): 
        result = f(*args, **kwds) 
        print result 
        return result 
    
+0

私はEclipseを使用していますが、そのような中間コードは可能な限り使用しないようにしたいと考えています。ありがとう! – Chris

4

を、それを印刷したい場合は関数は->'value'を返すとき、返された値の表現を持つ行の末尾に追加されます。例えば

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

do_stuff()あなたは隠された__return__ローカル変数に見ることができます'f'

+0

私はこの権利を理解していれば、戻り値の直前のステップで戻り値が表示されます。これはEclipseの実装では機能しますか? – Chris

+0

いいえ、実際には関数が返ってきます。私はEclipseの実装についてはわかりません。pdb(標準ライブラリにあるデバッガ)を使用する場合は、 – KurzedMetal

+0

を指定してください。特に、戻り値が長い場合やオブジェクトの場合は、必ずしもそうではありません。 – Kevin