python参考手册--第10、11章执行环境、调试
2014-02-25 18:41
537 查看
1.解释器选项和环境
python [options] [-c cmd | filename | - ] [args]例如:python -m pdb test.py
以脚本的形式运行库模块pdb
2.交互模式
-i可进行交互模式,交互模式下的运行结果保存在_中>>>7+3
>>>_+2
12
3.文档字符串和doctest模块
函数、类、模块第一行通常用'''************'''作为文档字符串来给出描述信息。包含文档字符串被认为是一种良好的编程风格。doctest模块:
doctest.testmod(moduleName)在指定的模块上运行测试,返回测试失败的数量和执行的测试总数。
使用doctest会产生很长和负责的文档字符串,建议使用unittest
4.unittest模块
可以单独建一个测试文件,也可在原来文件上附件上测试类,通过在__main__入口处引导进入单元测试,单元测试会执行单元测试类的所有test开头的方法。5.pdb模块
1)启动调试器:pdb.run('moduleA.start()')
2)命令行启动调试器:
python -m pdb moduleA.py
6.profile模块
profile和cprofile模块用于收集探测信息python -m cprofile moduleA.py
运行探测器之后将生成一个报告,显示程序耗时、函数调用、内存占用。对优化相当有帮助。
7.优化
1)时间测试time.clock()
time.time()
timeit('a = [1,2,3,4,6]')
等进行时间消耗测试
2)内存测试
sum(sys.getsizeof(x) for x in items)
7.反汇编
from dis import disdis(spilt)
8.程序优化思路
1)利用二八定律(帕累托定律),对程序中耗时最多的那部分代码进行时间分析、内存分析,重点优化。2)不要添加额外的层:不要用dict('name':'jack','age':29) 这样增加了一层dict函数调用。
3)利用字典构造类和实例:
timeid(studentA = {'name':'jack','age':29})优于:timeid(studentA = Student('jack',29))
4)使用__slots__:
如果程序创建了用户定义类的大量实例,可以在类定义中使用__slots__属性。
__slots__ = ['name','age']告诉类Student的属性是['name','age']。使用__slots__ 的类会限制属性名称的设置,这种类不使用字典存储实例数据,采用更高效的数据结构,内存占用更少,访问更快。但是会破坏__dict__
5)避免使用(.)
x.name查找属性时会先在环境中查找变量x,然后再在x上查找属性name。应该先局部化变量name,sname = x.name,供以后使用。
6)异常能避免就避免:
不要在代码中对常见的情况进行异常处理,而应该用if else分支进行处理。
7)鼓励使用函数编程和迭代
8)使用装饰器和元类
相关文章推荐
- 【Python编程】网页URL提取实例
- Python的常见几道数学运算题
- Python 处理理时间超详细转的
- Python源码剖析----第三章(下)
- storm安装(2)ZeroMQ、JZMQ、Python、Java环境的安装
- Python第三站-深入文件与异常(数据持久化)
- python文件处理:file对象,tempfile,shuitl,os.path,os
- 如何访问python类中的私有方法
- Python 之 类
- 如果有python而不能生成win独立可执行文件,则要python有什么用呢
- Python 装饰器举例
- python 使用 signal模块实现函数调用超时问题
- python 常见问题
- wxpython listbox multiselection
- python的list的一些去重方法
- qemu-img: Could not open old backing file... 分类: python学习 2014-02-25 15:20 1028人阅读 评论(0) 收藏
- python pycurl
- Python——Pylab简单读取wav文件示例
- PyAudio——播放wave文件的实例
- 【Python编程】读取网页内容并存储过滤