2

私はプログラミングの分野ではありませんが、最近 Python に興味を持ちました。いくつかの関数を書いていましたが、デバッグのために実行中のコマンドを確認する必要があります。例えば:

def foo():
    for i in xrange(0,5):
        a = 1 + i

インタプリタ出力は可能ですか?

>>> for i in xrange(0,5)
>>> a = 1 + 0
>>> a = 1 + 1
>>> a = 1 + 2
>>> a = 1 + 3
>>> a = 1 + 4

為に

>>> foo()

または、少なくとも何が起こっているのかをファイルに書き込みますか? 過去にスクリプトを作成したことがありますが、これは @ECHO ON などを使用して DOS で可能だったことを覚えています。私はいくつかの読書をしましたが、Pythonのstdinとstdoutに関連しているように感じたので、試しました

import sys
def foo():
    for i in xrange(0,5):
        a = 1 + i
        sys.stdin.flush()
        sys.stdout.flush()

しかし、何も得られません...私も試しました

import sys
# foo()
sys.stdin.read()
sys.stdout.read()

およびhttps://stackoverflow.com/a/3289051/2032568、しかしハングするだけです。初心者向けのサイトでなかったらごめんなさい。私の質問に答えるものは何も見つかりませんでした。

4

5 に答える 5

3

トレースモジュールを見てください

python -m trace --count -C . somefile.py

出力は curebt ディレクトリに配置されます。

$ cat somefile.trace
    1: def foo():
    6:     for i in xrange(5):
    5:         a = 1 + i

    1: foo()

-c, --count プログラムの完了時に、各ステートメントが実行された回数を示す注釈付きリスト ファイルのセットを生成します。

オプションを使用すると、次の-tようになります。

$ python -m trace --count -t tr.py 
 --- modulename: tr, funcname: <module>
tr.py(1): def foo():
tr.py(5): foo()
 --- modulename: tr, funcname: foo
tr.py(2):     for i in xrange(5):
tr.py(3):         a = 1 + i
tr.py(2):     for i in xrange(5):
tr.py(3):         a = 1 + i
tr.py(2):     for i in xrange(5):
tr.py(3):         a = 1 + i
tr.py(2):     for i in xrange(5):
tr.py(3):         a = 1 + i
tr.py(2):     for i in xrange(5):
tr.py(3):         a = 1 + i
tr.py(2):     for i in xrange(5):
于 2013-04-14T20:12:57.587 に答える
1

このようなことを意味しますか?

def foo():
         for i in xrange(0,5):
                 a = 1 + i
                 print "a = 1 + {0}".format(i)

>>> foo()
a = 1 + 0
a = 1 + 1
a = 1 + 2
a = 1 + 3
a = 1 + 4
于 2013-04-14T20:04:46.760 に答える
0

私はあなたがここで何を達成すべきかを理解しており、そのリンクをチェックしました。私もハングアップし、ターミナルで入力されたテキストのみを繰り返します。残念ながら、あなたが尋ねたようにスクリプトを出力する方法がわかりません。デバッグの場合は、単純な印刷コマンドを使用して、どのセクションが実行されているかを確認することをお勧めします。

def foo():
    for i in xrange(0,5):
        a = 1 + i, print "line is being executed where i = %i " % i

次に、印刷されたテキスト出力を読んで、プログラムが何をしているかを確認します。お役に立てれば。

于 2013-04-14T20:18:08.310 に答える
0
def foo():
    for i in xrange(0,5):
        a = 1 + i
        print a

これがあなたが探しているものだと思います。これがあなたにとって役立つことを願っています:)

編集:

私はあなたが望むものを理解したと思います:

def foo():
    for i in xrange(0,5):
        print "a = 1 + i"
于 2013-04-14T20:02:55.580 に答える