- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Python程序员必知必会的开发者工具
Python程序员必知必会的开发者工具
Python已经演化出了一个广泛的生态系统,该生态系统能够让Python程序员的生活
变得更加简单,减少他们重复造轮的工作。同样的理念也适用于工具开发者的工作,即
便他们开发出的工具并没有出现在最终的程序中。本文将介绍Python程序员必知必会
的开发者工具。
对于开发者来说,最实用的帮助莫过于帮助他们编写代码文档了。pydoc模块可以根据
源代码中的docstrings为任何可导入模块生成格式良好的文档。Python包含了两
个测试框架来自动测试代码以及验证代码的正确性:1)doctest模块,该模块可以从
源代码或独立文件的例子中抽取出测试用例。2)unittest模块,该模块是一个全功
能的自动化测试框架,该框架提供了对测试准备(test fixtures), 预定义测试集
(predefined test suite)以及测试发现(test discovery)的支持。
trace模块可以监控Python执行程序的方式,同时生成一个报表来显示程序的每一
行执行的次数。这些信息可以用来发现未被自动化测试集所覆盖的程序执行路径,也可
以用来研究程序调用图,进而发现模块之间的依赖关系。编写并执行测试可以发现绝大
多数程序中的问题,Python使得debug工作变得更加简单,这是因为在大部分情况
下,Python都能够将未被处理的错误打印到控制台中,我们称这些错误信息为
traceback。如果程序不是在文本控制台中运行的,traceback也能够将错误信息输
出到日志文件或是消息对话框中。当标准的traceback无法提供足够的信息时,可以
使用cgitb 模块来查看各级栈和源代码上下文中的详细信息,比如局部变量。cgitb
模块还能够将这些跟踪信息以HTML的形式输出,用来报告web应用中的错误。
一旦发现了问题出在哪里后,就需要使用到交互式调试器进入到代码中进行调试工作
了,pdb模块能够很好地胜任这项工作。该模块可以显示出程序在错误产生时的执行路
径,同时可以动态地调整对象和代码进行调试。当程序通过测试并调试后,下一步就是
要将注意力放到性能上了。开发者可以使用profile 以及timit模块来测试程序的速
度,找出程序中到底是哪里很慢,进而对这部分代码独立出来进行调优的工作。Python
程序是通过解释器执行的,解释器的输入是原有程序的字节码编译版本。这个字节码编
译版本可以在程序执行时动态地生成,也可以在程序打包的时候就生成。compileall
模块可以处理程序打包的事宜,它暴露出了打包相关的接口,该接口能够被安装程序和
打包工具用来生成包含模块字节码的文件。同时,在开发环境中,compileall模块也
可以用来验证源文件是否包含了语法错误。
在源代码级别,pyclbr模块提供了一个类查看器,方便文本编辑器或是其他程序对
Python程序中有意思的字符进行扫描,比如函数或者是类。在提供了类查看器以后,
就无需引入代码,这样就避免了潜在的副作用影响。
文档字符串与doctest模块
如果函数,类或者是模块的第一行是一个字符串,那么这个字符串就是一个文档字符串。
可以认为包含文档字符串是一个良好的编程习惯,这是因为这些字符串可以给Python
程序开发工具提供一些信息。比如,help()命令能够检测文档字符串,Python相关
的IDE也能够进行检测文档字符串的工作。由于程序员倾向于在交互式shell中查看
文档字符串,所以最好将这些字符串写的简短一些。例如
Python
1# mult.py
2class Test:
3
4 a=Test(5)
5 a.multiply_by_2()
6 10
7
8 def __init__(self, number):
9 self._number=number
10
11 def multiply_by_2(self):
12 return self._number*2
在编写文档时,一个常见的问题就是如何保持文档和实际代码的同步。例如,程序员也
许会修改函数的实现,但是却忘记了更新文档。针对这个问题,我们可以使用doctest
模块。doctest模块收集文档字符串,并对它们进行扫描,然后将它们作为测试进行
执行。为了使用doctest模块,我们通常会新建一个用于测试的独立的模块。例如,
如果前面的例子Test class包含在文件mult.py 中,那么,你应该新建一个
testmult.py文件用来测试,如下所
文档评论(0)