1

エバリュエーターを起動後と同じステート マシンにするために、Python 環境をクリアできますか?

評価者を再起動しないでほしいです。

4

2 に答える 2

4

Python インタープリターを組み込んだカスタム C プログラムを使用してリセットすることはできますが、Python コードだけで Python インタープリターの状態を完全にリセットすることはできません。

ただし、特定のケースでは、サブインタープリターで各「問題」を次のように実行するだけで十分でしょう...

import sys
import code

def reset():
    raise SystemExit(123)

sys.modules['__builtin__'].reset = reset

banner = None

while 1:
    try:
        code.interact(banner=banner, local={})
        break
    except SystemExit as e:
        if e.code == 123:
            banner = 'Resetting...'
            continue
        raise

...そのスクリプトを実行すると、次のように使用できます...

Python 2.7.4 (default, Apr 19 2013, 18:28:01)
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> dir()
['__builtins__']
>>> a = 1
>>> dir()
['__builtins__', 'a']
>>> reset()
Resetting...
>>> dir()
['__builtins__']
于 2013-06-21T21:29:39.103 に答える
1

これはどう:

>>>globals().clear()
于 2013-06-21T20:07:42.550 に答える