- 译者序
- 前言
- 第1章 问答环节
- 第2章 Python 如何运行程序
- 第3章 如何运行程序
- 第4章 介绍 Python 对象类型
- 第5章 数字
- 第6章 动态类型简介
- 第7章 字符串
- 第8章 列表与字典
- 第9章 元组、文件及其他
- 第10章 Python 语句简介
- 第11章 赋值、表达式和打印
- 第12章 if 测试和语法规则
- 第13章 while 和 for 循环
- 第14章 迭代器和解析,第一部分
- 第15章 文档
- 第16章 函数基础
- 第17章 作用域
- 第18章 参数
- 第19章 函数的高级话题
- 第20章 迭代和解析,第二部分
- 第21章 模块:宏伟蓝图
- 第22章 模块代码编写基础
- 第23章 模块包
- 第24章 高级模块话题
- 第25章 OOP:宏伟蓝图
- 第27章 更多实例
- 第28章 类代码编写细节
- 第29章 运算符重载
- 第30章 类的设计
- 第31章 类的高级主题
- 第32章 异常基础
- 第34章 异常对象
- 第35章 异常的设计
- 第36章 Unicode 和字节字符串
- 字符串基础知识
- Python 的字符串类型
- 文本和二进制文件
- Python 3.0 中的字符串应用
- 转换
- 编码 Unicode 字符串
- 编码非ASCII文本
- 编码和解码非ASCII文本
- 其他 Unicode 编码技术
- 转换编码
- 在 Python 2.6 中编码 Unicode 字符串
- 源文件字符集编码声明
- 使用 Python 3.0 Bytes 对象
- 序列操作
- 创建 bytes 对象的其他方式
- 混合字符串类型
- 使用 Python 3.0(和 Python 2.6)bytearray 对象
- 使用文本文件和二进制文件
- Python 3.0 中的文本和二进制模式
- 类型和内容错误匹配
- 使用 Unicode 文件
- 在 Python 3.0 中处理 BOM
- Python 2.6 中的 Unicode 文件
- Python 3.0 中其他字符串工具的变化
- Struct二进制数据模块
- pickle对象序列化模块
- XML解析工具
- 本章小结
- 本章习题
- 习题解答
- 第37章 管理属性
- 第38章 装饰器
- 第39章 元类
- 附录A 安装和配置
- 附录B 各部分练习题的解答
- 作者介绍
- 封面介绍
我应该选用哪种
从另一面来说,如果你是一个有经验的程序员,你也许觉得这样的方式更惬意一些,简化成在一个窗口使用你选择的文本编辑器,在另一个窗口通过命令行或点击图标启动编写程序(事实上,这是作者如何开发Python程序,但是他有偏好UNIX的过去)。因为开发环境是很主观的选择,本书很难提供统一的标准。一般来说,你最喜欢使用的环境,往往就是最适合你用的环境。
调试Python代码
一般的,我们的读者或学生不会在他们的代码里包含Bug(在此置之一笑吧),但为了极少数可能遭遇不幸的朋友,这里快速介绍现实世界的Python程序员调试代码时候常用的一些策略:
·什么也不做。我这么讲,并不是说Python程序员不要调试自己的代码,但是,当你在一个Python程序中犯错的时候,会得到一条非常有用而容易读懂的出错消息(如果你已经有了一些错误的话,很快会见到这些消息)。如果你已经了解Python了,特别是如果你已经熟悉自己的代码了,那么,这么做通常就够了:阅读出错消息,并修改标记的行和文件。对于很多人来说,这就是Python中的调试。但是,对于你没有编写过的那些大型系统来说,这并不总是理想的做法。
·插入print语句。可能Python程序员调试自己的代码的主要方式(以及我调试Python代码的方式),就是插入print语句并再次运行。由于Python在修改后立即运行,这通常是获取比出错消息所提供的更多的信息的一种快捷方式。print语句不必很复杂,一条简单的"I am here"或变量值的显示,通常就能够提供你所需的足够的背景信息。只是别忘了,在发布你的代码之前,删除掉或注释掉(如,在前面添加一个#)用来调试的print。
·使用IDE GUI调试器。对于你没有编写过的较大的系统,以及对于那些想要更详细地跟踪代码的初学者,大多数Python开发GUI都有某种指向点击调试器。IDLE也有一个调试器,但是,它在实际中似乎并不常用,可能是因为它没有命令行,或者可能是因为添加print语句通常比设置一个GUI调试会话要快。要了解更多内容,请查阅IDLE的帮助,或者直接自己尝试;其基本界面如本章前面的“高级IDLE工具”部分所述。其他的IDE,如Eclipse、NetBeans、Komodo和WingIDE也都提供了高级的指向点击调试器,如果你使用这些IDE,请查阅它们的文档。
·使用pdb命令行调试器。为了实现最终控制,Python附带了一个名为pdb的源代码调试器,可以作为Python的标准库中的一个模块使用。在pdb中,我们输入命令来一行一行地步进执行,显示变量,设置和清除断点,继续执行到一个断点或错误,等等。通过导入可以交互地启动pdb,或者作为一个顶层脚本启动。不管哪种方式,由于我们可以输入命令来控制会话,它都提供了强大的调试工具。pdb还包含了一个postmortem函数,可以在异常发生后执行它,从而获取发生错误时的信息。参见Python的库手册以及本书第35章了解关于pdb的更多细节。
·其他选项。如果有更具体的调试需求,你可以在开源领域找到其他的工具,包括支持多线程程序、嵌入式代码和进程附件的工具。例如,Winpdb系统是一个独立的调试器,具有高级的调试支持、跨平台的GUI和控制台界面。
随着我们开始编写较大的脚本,这些选项将变得更加重要。然而,可能关于调试最好的消息是,在Python中检测出并报告错误,而不是默默地传递错误或最总导致系统崩溃。实际上,错误本身是一种定义良好的机制,叫做异常,我们可以捕获并处理它们(更多关于异常的讨论在本书第三部分进行)。当然,犯错并不好玩,但是,正如某人所说的:当进行调试意味着最终得出一个十六进制计算器和仔细钻研成堆的内存转储输出的时候,有了Python的调试器支持,所犯的错误不会像没有调试器的情况下那样令人痛苦不堪。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论