zoukankan      html  css  js  c++  java
  • 学习Python的一些Tips

    0. Python安装
      官网提供多种方式,一般Windows下直接安装exe即可;Linux下基本上自带python;另外也提供源码,也可自行编译;
      若安装后无法使用,则检查一下环境变量是否设置正确。
      额外:除了最主要的官网资料、文档外,Python的wiki也提供了很多有用的信息

    1. Python相关源码
      0) 标准库
      1) PyPi包索引(可通过pip工具安装)
      2) GitHub上的Python项目
      3) Code activestate上面的Python代码片段

    2. Python安装包
      0) msi或exe格式直接运行安装
      1) pip方式安装,pip install 可安装whl格式或新版本pip下可直接安装包PyPi下指定的包
      2) easy_install 安装egg格式的包
      3) 对于提供源码的包,可通过python setup.py install 安装,一般会提供setup.py文件

    3. Python开发环境
      0) vim /notepad++/Sublime Text等一系列编辑器
      1) 自带的基于Tk的IDLE/IPython
      2) PyCharm/Eric或者Eclipse PyDev/VS等基于插件的IDE

    4. 命名、代码规范
      0) Google Python Style Guide
      1) PEP8 Python编码规范
      2) 使用pylint、pyflakes、PEP8代码风格检查工具、isort 对import语句分段排序工具、clonedigger代码重复率查询等工具检查代码

    5. 注释、文档
      0) 文档包括注释和文档字符串,一般在变量名、函数名、模块名和类名中
      1) Python只有单行注释,对于''''''的文档字符串也可当作注释;不过不太建议,代码风格可能不太规范

    6. 测试代码
      0) 对于简单的单个模块可用:if __name__ == '__main__'内容中添加测试内容也可
      1) 标准库中的doctest测试包,把测试写到文档字符串中也起到一定的文档说明的作用,其中文档字符串内容为:
        字符 >>> 后面是一个函数调用,下一行是期望的执行结果,此后调用doctest.testmod()并在执行时增加-v选项即可
      2) 标准库中的unittest模块进行单元测试,其需要实现该包含测试方法的继承类,此后调用unittest.main()执行所有的测试用例
      3) 第三方的测试包nose,其只需要使得以test开头的函数作为测试用例;测试文件xxx.py不需要写if __name__ == '__main__',
        此后执行nosetests xxx.py即可
      4) 集成测试Test Discovery,可测试项目中多个测试用例文件;使用方式:python -m unittest discover
      5) 各个Python测试框架,如pytest、tox框架

    7. 持续集成(自动化构建、测试系统)
      0) buildbot
      1) jenkins
      2) travis-ci
      3) coverage代码覆盖率测试工具
      4) tox

    8. 调试代码
      0) 最一般的就是在需要的地方调用print打印信息
      1) vars()函数调用可打印参数列表内容,结合装饰器即可方便在调用实际函数前后打印、获取某些信息或是执行调用其他函数
      2) 使用pdb调试器,使用方法:python -m pdb xxx.py

    9. 日志记录
      0) 简单的用print打印信息至控制台或者文件
      1) 使用标准库中的logging模块,提供打印级别、格式、目标、过滤器等

    10. 优化代码
      0) 一般情况下是先优化算法、数据结构;
      1) 使用标准库time模块的time函数测量执行时间,计算时间差可粗略计算执行时间
      2) 使用标准库timeit模块的timeit函数可简单测试代码片段的执行时间
      3) 使用标准库timeit模块的repeat函数可多次测试代码片段
      4) 优化小tips:
        0. 优化数据结构,比如:列表解析通常比for循环自己添加元素更快
        1. 优化算法
        2. Cython用来生成C扩展,Python中使用C写成的库(与CPython不一样,后者为Python默认实现的解释器)
        3. 另外某些计算的数学库,还可以使用NumPy(C语言实现)
        4. 对于某些通过分析器分析得到的确需要提高性能的部分可以使用C扩展来实现,以提高性能
        5. 使用标准库ctypes模块整合C语言库的实现
        6. 使用PyPy解析器(由Python实现的解析器,内部可能用到JIT即时解析器、沙盒等),其比CPython解释器更快

    11. 源码控制
      0) Git
      1) SVN
      2) CVS
      3) Mercurial(Hg)
      4) 其他

    12. 程序打包
      0) Distutils打包程序
      1) 结合0)使用sdist命令打包
      2) 结合0)使用bdist命令打包并创建安装程序
      3) 结合0)使用扩展python,需要提供setup.py,build_ext命令打包
      4) 使用py2exe等第三方工具创建可执行程序,同样也需要提供setup.py
      5) 其他第三方打包工具

    13. 一些不错的Python学习资源或者其他相关资料
      0) https://github.com/jobbole/awesome-python-books
      1) http://docs.python-guide.org/en/latest/#
      2) https://zhuanlan.zhihu.com/p/22275595
      3) https://www.zhihu.com/question/29138020
      4) https://github.com/Yixiaohan/show-me-the-code
      5) https://readthedocs.org/
      6) https://github.com/vinta/awesome-python

  • 相关阅读:
    NewtonSoft.Json
    属性
    csv文件
    C#和递归算法实现删除,清空,拷贝目录
    朴素贝叶斯应用:垃圾邮件分类
    压缩图片
    numpy分布图
    鸢尾花
    numpy数组及处理:效率对比
    完整的中英文词频统计
  • 原文地址:https://www.cnblogs.com/haomiao/p/6580864.html
Copyright © 2011-2022 走看看