次のように、Python スクリプトの途中で対話型コンソールをセットアップできます。
import code
a, b = 5, 7
c = [1, 2, 34]
shareVars = {'a':a, 'b':b, 'c':c}
shell = code.InteractiveConsole(shareVars)
print 'Before interacting, variables are: ', a, b, c
shell.interact('Available variables: %s' % ', '.join(shareVars.keys()))
print 'Done interacting, variables are: ', a, b, c
ウィンドウを押すCtrl+Z
と、セッションはスクリプトに戻り、対話型セッションに送信された変数の値を出力します。
ここで、対話型セッションからスクリプトに変数への変更を何らかの方法で伝えたいと考えています。これは、インタラクティブ セッションで可変オブジェクトのインプレース変更に対してのみ機能するように見えることに気付きました。
たとえば、インタラクティブ セッションで次のように入力すると、次のようになります。
>>> c.append(5) # change will be carried over to the script
>>> c = [56, 67] # c will remain unchanged in the original script
>>> a+=3 # a will remain unchanged in the original script
メインスクリプトを終了すると、次の出力が得られます。
Done interacting, variables are: ', 5, 7, [1, 2, 34, 5]
可変オブジェクトのインプレース変更と他のすべての種類の変更との間のこの区別を取り除く方法はありますか? 対話型セッションからスクリプトに変数を簡単に戻すにはどうすればよいですか? pickle-unpickle
ルートに行かなければなりませんか?