4

Python Interactive Interpreter を使用すると、式を入力できます。たとえば1+1、値が出力されます。スクリプトを記述1+1しても、何も出力されません。これは完全に理にかなっています。

ただし、 のサブクラスを作成し、メソッドを使用してそれにcode.InteractiveInterpreter渡すと、 が出力されないため、あまり意味がありません。1+1runcode2

インスタンスに式の値を出力させるクリーンな方法を知っている人はいますか?InteractiveInterpreter

注: アプリケーションはユーザーにシェルを提供するため、これはかなり堅牢である必要があり、ユーザーがどのようなものかは誰もが知っています。

乾杯

PSこれはPython3アプリケーション用ですが、より良いPython2ソリューションがチェックされます.

4

1 に答える 1

2

そのためじゃないcode.InteractiveConsoleの?

>>> import code
>>> console = code.InteractiveConsole()
>>> r = console.push('1+1')
2
>>> r = console.push('x = 4 + 1')
>>> r = console.push('x + 10')
15

>>> r = console.push('def test(n):')
>>> r = console.push('  return n + 5')
>>> r = console.push('')
>>> r = console.push('test(10)')
15

または改行を埋め込んで:

>>> r = console.push('def test2(n):\n  return n+10\n')
>>> r = console.push('test2(10)')
20
>>>

# the following, however, fails...
>>> r = console.push('test(10)\ntest(15)')
  File "<console>", line 1
    test(10)
           ^
SyntaxError: multiple statements found while compiling a single statement
>>> 
于 2013-10-11T02:16:37.653 に答える