0

Elpyを使用してEmacsでIPython3を実行しており、ネストされた関数をその場で編集しようとしています。たとえば、添付ファイルを 1 つのフレームで開き、IPython3 を別のフレームで開いています。でバッファーを IPython に送信しC-c C-y b、 で IPython フレームに切り替えC-x oます。

import sys

def print_name():
    print ("Alice")

def name ():
    print_name()

def main(argv):
    print ("In main.")
    import ipdb; ipdb.set_trace()
    name()

if __name__ == "__main__":
    main(sys.argv[1:])

と入力してコードを実行しますmain(0)

In [1]: main(0)
In main.
> /Users/ayank/Documents/programming/python/bar.py(12)main()
     11     import ipdb; ipdb.set_trace()
---> 12     name()
     13 

デバッグ プロンプトが表示され、次のように実行します。

ipdb> name()
Alice

ここで、 のコード ウィンドウに戻りprint_name()、 に変更AliceBob、関数を で IPython3 に再送信しますC-c C-y f。IPython フレームに次のように表示されます。

ipdb> def print_name():
 ...:     print ("Bob")

IPython フレームに戻り、次のように入力します。

ipdb> name()
Alice
ipdb> print_name()
Bob

それは正しくありません: 両方とも を出力する必要がありますBob。を使用してバッファー全体を IPython に再送信できC-c C-y bますが、同じ答えが得られname()ますAlice

何が起きてる?デバッグ中に IPython3 のネストされた関数を更新するにはどうすればよいですか?

4

1 に答える 1