Python解释器基类

Python的交互模式基于REPL的原理(读取-评估-打印-循环)。Python标准库中的代码模块提供了类和便捷功能,可从Python脚本中设置REPL环境。

在代码模块中定义了以下两个类:

InteractiveInterpreter:此类处理解析和解释器状态(用户的命名空间)

InteractiveConsole:紧密模拟交互式Python解释器的行为。

模块中的两个便捷功能是:

interact():便利函数,用于运行read-eval-print循环。

compile_command():此函数对想要模拟Python解释器主循环(REPL)的程序很有用。

互动口译员方法

runsource():编译并运行解释器中的某些源。

runcode():执行一个代码对象

交互式控制台方法:

因为InteractiveConsole类是InteractiveInterpreter的子类,所以上述方法是自动可用的。另外,定义了以下方法。

interact():紧密模拟交互式Python控制台。

push():将一行源文本推到解释器。

resetbuffer():从输入缓冲区中删除所有未处理的源文本。

raw_input(提示=“”)

编写提示并默认从sys.stdin中读取一行

示例

import code
x = 10
y = 20
def add(x,y):
   return x+y
print (add(x,y))
code.interact(local=locals())
print (x,y)
print (add(x,y))

在上面的代码中,定义了两个变量并将其传递给函数。我们调用他的交互式控制台。参数local = locals()允许将本地命名空间用作解释器循环中的默认命名空间。

如果您为变量分配了不同的值并通过按ctrl + D退出控制台,则这些值现在将传递给函数

输出结果

addition= 30
Python 3.6.6 |Anaconda custom (64-bit)| (default, Oct 9 2018, 12:34:16)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> x=100
>>> y=200
>>>

now exiting InteractiveConsole...
100 200
addition = 300