Python 解释器基类
Python 的交互模式基于 REPL (读取-求值-打印-循环) 原理。Python 标准库中的 `code` 模块提供了一些类和便捷函数,用于在 Python 脚本中设置 REPL 环境。
`code` 模块中定义了以下两个类:
`InteractiveInterpreter`:此类处理解析和解释器状态(用户的命名空间)。
`InteractiveConsole`: 紧密模拟交互式 Python 解释器的行为。
模块中的两个便捷函数是:
`interact()`:运行读取-求值-打印循环的便捷函数。
`compile_command()`:此函数对于想要模拟 Python 解释器主循环(REPL)的程序很有用。
交互式解释器方法
`runsource()`:编译并在解释器中运行一些源代码。
`runcode()`:执行代码对象。
交互式控制台方法
因为 `InteractiveConsole` 类是 `InteractiveInterpreter` 的子类,所以上述方法会自动可用。此外,还定义了以下方法:
`interact()`:紧密模拟交互式 Python 控制台。
`push()`:将一行源文本推送到解释器。
`resetbuffer()`:从输入缓冲区中移除任何未处理的源文本。
`raw_input(prompt="")`
默认情况下,从 `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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP