4

当您使用 Python 交互式解释器时,您可以输入一个表达式,比如说1+1它会打印该值。如果你用1+1脚本编写,它不会打印任何东西,这很有意义。

但是,当您创建 的子类,然后使用该方法code.InteractiveInterpreter传递给它时,它不会 print ,这没有多大意义。1+1runcode2

有谁知道让实例打印表达式值的干净方法?InteractiveInterpreter

注意:这需要非常健壮,因为应用程序为用户提供了一个 shell,我们都知道他们喜欢什么。

干杯

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 回答