zoukankan      html  css  js  c++  java
  • python参考手册--第10、11章执行环境、调试

    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 dis

    dis(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)使用装饰器和元类

  • 相关阅读:
    grunt in webstorm
    10+ Best Responsive HTML5 AngularJS Templates
    响应式布局
    responsive grid
    responsive layout
    js event bubble and capturing
    Understanding Service Types
    To add private variable to this Javascript literal object
    Centering HTML elements larger than their parents
    java5 新特性
  • 原文地址:https://www.cnblogs.com/DjangoBlog/p/3567437.html
Copyright © 2011-2022 走看看