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