博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python标准库介绍——30 code 模块详解
阅读量:6256 次
发布时间:2019-06-22

本文共 2173 字,大约阅读时间需要 7 分钟。

==code 模块==``code`` 模块提供了一些用于模拟标准交互解释器行为的函数.``compile_command`` 与内建 ``compile`` 函数行为相似, 但它会通过测试来保证你传递的是一个完成的 Python 语句.在 [Example 2-47 #eg-2-47] 中, 我们一行一行地编译一个程序, 编译完成后会执行所得到的代码对象 (code object). 程序代码如下:```a = (  1,  2,  3)print a```注意只有我们到达第 2 个括号, 元组的赋值操作能编译完成.====Example 2-47. 使用 code 模块编译语句====[eg-2-47]```File: code-example-1.pyimport codeimport string# SCRIPT = [    "a = (",    "  1,",    "  2,",    "  3 ",    ")",    "print a"]script = ""for line in SCRIPT:    script = script + line + "\n"    co = code.compile_command(script, "
", "exec") if co: # got a complete statement. execute it! print "-"*40 print script, print "-"*40 exec co script = ""*B*----------------------------------------a = ( 1, 2, 3 )--------------------------------------------------------------------------------print a----------------------------------------(1, 2, 3)*b*```//InteractiveConsole// 类实现了一个交互控制台, 类似你启动的 Python 解释器交互模式.控制台可以是活动的(自动调用函数到达下一行) 或是被动的(当有新数据时调用 //push// 方法). 默认使用内建的 ``raw_input`` 函数. 如果你想使用另个输入函数, 你可以使用相同的名称重载这个方法. [Example 2-48 #eg-2-48] 展示了如何使用 ``code`` 模块来模拟交互解释器.====Example 2-48. 使用 code 模块模拟交互解释器====[eg-2-48]```File: code-example-2.pyimport codeconsole = code.InteractiveConsole()console.interact()*B*Python 1.5.2Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam(InteractiveConsole)>>> a = (... 1,... 2,... 3... )>>> print a(1, 2, 3)*b*```[Example 2-49 #eg-2-49] 中的脚本定义了一个 ``keyboard`` 函数. 它允许你在程序中手动控制交互解释器.====Example 2-49. 使用 code 模块实现简单的 Debugging====[eg-2-49]```File: code-example-3.pydef keyboard(banner=None): import code, sys # use exception trick to pick up the current frame try: raise None except: frame = sys.exc_info()[2].tb_frame.f_back # evaluate commands in current namespace namespace = frame.f_globals.copy() namespace.update(frame.f_locals) code.interact(banner=banner, local=namespace)def func(): print "START" a = 10 keyboard() print "END"func()*B*STARTPython 1.5.2Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam(InteractiveConsole)>>> print a10>>> print keyboard
^ZEND*b*```

 

转载地址:http://krtsa.baihongyu.com/

你可能感兴趣的文章
线上应用故障排查之二:高内存占用
查看>>
第四次作业
查看>>
异常处理汇总 ~ 修正果带着你的Code飞奔吧!
查看>>
BFS --- 素数环
查看>>
PCIE_DMA:xapp1052学习笔记
查看>>
python ----字符串基础练习题30道
查看>>
uva-10879-因数分解
查看>>
python 调用aiohttp
查看>>
Spring Boot中使用MyBatis注解配置详解
查看>>
linux下文件的一些文件颜色的含义
查看>>
跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
查看>>
如何花更少的时间学习更多的知识
查看>>
学习鸟哥的Linux私房菜笔记(8)——文件查找与文件管理2
查看>>
升级fedora 18到fedora 19
查看>>
【代码小记】无
查看>>
BarTender 2016表单中的“秤显示”控件
查看>>
11月20日学习内容整理:jquery插件
查看>>
Redis客户端集群
查看>>
javascript基础篇:函数
查看>>
SVN与TortoiseSVN实战:补丁详解
查看>>