如何编写高质量的python程序

作者&投稿:芮万 (若有异议请与网页底部的电邮联系)
如何编写高质量的Python程序~

当你想到这个问题的时候,就是好的开始。

python因为太容易,往往不注意编码规范,另外还要研究设计方法。保持DRY和KISS原则是良好的方法。

质量高低其实与重用的多少有关系。如果程序质量好,重用的多,就是好程序。如果程序只用一次,而且也能用,开发速度也快,质量低些没有关系的。

刚入门的人要保持一个习惯,先设计再编码。不要上来边写代码边改思路。

优化了你的设计思路,代码质量也相应会提高。 另外测试驱动也是好的软件工程实践。

在做一个代码时,想一想你需要什么。除了功能,还有重用性,稳定性,性能外,还有开发速度快,以及容易被第三者学习等等。接下来要动脑子,想办法,如何达到这个目标。

在必要的时候采用面向对象的设计方法(注意是设计 方法,而不是编码 方法)。 去重构。

这些细节很多。以上只是讲些原则。具体怎么提升可以自己总结 。

高质量才能高速度。

个人觉得不适合,因为这些都跟语言相关性很大,如果c/c++,可能更侧重效率和性能,也会谈到内存分配相关的,python有gc,内存分配就不是大问题。

代码规范
首先阅读下面的两份规范,并深入理解。
Python社区官方建议采用的Python编码风格:PEP8 中文版
Google SoC 建议的 Python 编码风格:Google Python Style Guide 中文版
写出规范的代码是写出高质量代码的第一步,并且有助于培养仔细的习惯。
为了培养规范写代码的习惯,可以安装flake8这个工具,它不仅可以检查代码风格是否符合官方建议(PEP8),而且还能找出潜在的隐患(用Pyflakes做语法分析),更逆天的是还能检测到你有些函数写的太复杂(代码圈复杂度)了,更更逆天的是可以设置git commit之前必须通过这些检查。
当然具体操作需要根据自己的项目进行一些定制,比如可以忽略E501,W293。
空白项目模版
好的开始是成功的一半,写python代码就从pyempty开始吧。
在github上看一下那些经典的项目,web.py,flask, pep8,他们的项目目录都很规范,综合借鉴了一些项目的特点,我写了这个pyempty项目。
1.README.md 这里写你项目的简介,quick start等信息,虽然distutils要求这个文件没有后缀名,但github上如果后缀是.md的话可以直接转换成html显示。
2.ChangeLog.txt 该文件存放程序各版本的变更信息,也有一定的格式,参考web.py的ChangeLog.txt
3.LICENES.txt 这里存放你项目使用的协议,不要编写自己的协议。
4.requirements.txt 如果你的项目需要依赖其它的python第三方库,在这里一行一个写出来,可能pip install的时候能自动帮你安装
5.setup.py 安装脚本,后面详细介绍
6.docs 里面存放你的项目文档,如概要设计,详细设计,维护文档,pydoc自动生成的文档等,强烈推荐大家使用MarkDown格式编写文档
7.src 这个目录里存放项目模块的主要代码,尽量不要把模块目录直接放到根目录,模块代码目录可以在setup.py里指定的
8.tests 这个目录存放所有单元测试,性能测试脚本,单元测试的文件确保以test_做前缀,这样distutils会自动打包这些文件,并且用python -m unittest discover -s ./ -p 'test_*.py' -v 可以直接执行这些测试
单元测试
Martin Fowler:"在你不知道如何测试代码之前,就不该编写程序。而一旦你完成了程序,测试代码也应该完成。除非测试成功,你不能认为你编写出了可以工作的程序。"
我们有很多理由不写单元测试,归根结底是懒,虽然代码大全上说:
大部分研究都发现,检测比测试的成本更小。NASA软件工程实验室的一项研究发现,阅读代码每小时能够检测出来的缺陷要比测试高出80%左右(Basili and Selby 1987)。后来,IBM的一项研究又发现,检查发现的一个错误只需要3.5个工作时,而测试则需要花费15-25个工作时(Kaplan 1995)。
但是单元测试还是让别人相信你的代码有很高质量的最有力证据。
好了,请详细阅读:
深入python3.0: 单元测试-2.x也适用
Unit testing framework 不完整中文版
文档
敏捷开发不是提倡什么文档也不写,没有文档就没有传承和积累,轮岗或新人接手任务就会遇到很大的麻烦,所以我决定每个项目最少要写以下文档:
1.nalysis.model.md 概要设计文档,不同于README.md文件,该文档应该写于项目开发之前,把项目有哪些功能,大概分几个模块等项目整体概述信息写一下。
2.design.model.md 详细设计文档,不用太详细,至少把项目依赖哪些东西,谁依赖这个项目,重要算法流程描述,代码整体结构等写出来。
3.maintain.md 维护文档,这个我觉得最重要,你的服务都记录哪些日志,需要监控哪些业务指标,如何重启,有哪些配置项等,没这些东西,你的项目很难运维。
上面这些文档都是项目全局性的文档,不适合写在docstring或注视里,所以要有单独的文档。
打包
python有专门的模块打包系统distutils,你可以用这套机制把你的代码打包并分发到Pypi上,这样任何人都可以用pip或easy_install安装你的模块。
如果你开发的是内部项目,还可以用mypypi架设私有的pypi,然后把项目的大的版本更新发布到内部的pypi上,配置管理人员和运维人员可以很方便的从pypi上拉取代码安装到测试环境或生产环境。
发布大版本的时候要给版本命名及编写ChangeList,可以参考Git Pro的相关章节,主要记住以下几个命令。
git tag -a v0.1 -m 'my test tag' #给大版本命名,打Tag git describe master #给小版本命名,Git将会返回一个字符串,由三部分组成:最近一次标定的版本号,加上自那次标定之后的提交次数,再加上一段SHA-1值 git shortlog --no-merges master --not v0.1 #生成版本简报,ChangeList

python有自己的打包机制,所以一般不要用git archive命令。
当然大版本管理用pypi管理比较合适,小的bug fix,紧急上线等好多公司都是用git直接从生产环境拉代码更新,因为git,svn等可以很方便的撤销某次更新,回滚到某个位置。
关于打包,请阅读如下链接:
Python 打包指南
深入Python3.0:打包 Python 类库
python打包:分发指定文件


python是什么样的编程语言?
除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。 规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。Python的作者设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。其中很重要的一项就是...

程序文件是什么
当用户在计算机上运行程序时,操作系统会调用程序文件并执行其中的指令。程序文件的编写需要专业的编程技能和知识,以确保代码的正确性和功能性。此外,它们也是软件开发生命周期的重要组成部分,从需求分析、设计、编码到测试等各个阶段都有涉及。编写高质量的程序文件是确保计算机应用程序稳定性和效率的关键。...

Python数据可视化之高速绘图神器PyQtGraph库
例如,最为经典且使用人数最多的matplotlib库,它有着十多年的历史积累,能够生成高质量、适用于出版的图形,几乎已经成为Python绘图的标准库。除此之外,还有基于matplotlib库的衍生库,如seaborn、ggplot、plotnine等,以及使用JavaScript实现的开源可视化库pyecharts等。这些库操作简便,只需几行代码就能绘制...

自学python的学习路线是什么?推荐一些python学习资源
推荐的第一本书是《编写高质量代码–改善python程序的91个建议》,这本书大概的提了下Python工程的文件布局,更多的总结了如何写出pythonic的代码,另外,也介绍了一些常用的库。要想深入的了解Python,有的时候看看Python的源码也是很重要的,自己通过读懂源码,来彻底的了解Python的核心机制,这里推荐《...

Python 适合开发什么
通过Python,还可以利用py2exe模块生成exe应用程序。还有许多其他的日常维护和管理工作也可以交给Python来做,从而减少维护的工作量。利用Python,你还可以开发出象VB,VC,Delphi那样的GUI程序,但却可以在多个平台上执行。这在许多方面并不逊色于Java。 多媒体 利用PIL、Piddle、ReportLab等模块,你可以处理...

python怎么学习
笨办法学 Python(第四版)也不错 3、加入Python讨论群,态度友好笑眯眯(很重要,这样高手才会耐心纠正你错误常识)。很多小问题,纠结许久,对方一句话点播思路,就可以使你绕很多弯路。每天的编码必不可少,既然选择学习编程,学习Python,坚持编码应该是必须做到的。没有代码积累,要写出高质量的代码,...

python有哪些应用场景?
2.接下来,你需要下载Python人狗大战的代码。你可以在GitHub上找到该项目的代码,并将其下载到本地。3.打开终端,进入Python人狗大战的代码目录。在终端中输入pythonmain.py命令,即可运行游戏。4.游戏开始后,你需要编写人工智能算法来控制你的狗。你可以在代码中找到AI.py文件,并在其中编写你的算法。

什么是python语言的及其应用领域
Python是一门很适合做科学计算的编程语言,97年开始,NASA就大量使用Python进行各种复杂的科学运算,随着NumPy、SciPy、Matplotlib、Enthought librarys等众多程序库的开发,使得Python越来越适合做科学计算、绘制高质量的2D和3D图像。9. 游戏开发 在网络游戏开发中,Python也有很多应用,相比于Lua or C++,...

python是什么意思
NASA就在大量使用Python在进行各种复杂的科学运算,随着NumPy,SciPy,Matplotlib,Enthoughtlibrarys等众多程序库的开发,使得Python越来越适合做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛9....

Python 常用的标准库以及第三方库有哪些?
Matplotlib: 用Python实现的类matlab的第三方库,用以绘制一些高质量的数学二维图形。SciPy: 基于Python的matlab实现,旨在实现matlab的所有功能。NumPy: 基于Python的科学计算第三方库,提供了矩阵,线性代数,傅立叶变换等等的解决方案。3.GUI PyGtk: 基于Python的GUI程序开发GTK+库。PyQt:...

化隆回族自治县13962011515: 如何编写高质量的Python程序 -
尔范欣乐: 当你想到这个问题的时候,就是好的开始.python因为太容易,往往不注意编码规范,另外还要研究设计方法.保持DRY和KISS原则是良好的方法.质量高低其实与重用的多少有关系.如果程序质量好,重用的多,就是好程序.如果程序只用一...

化隆回族自治县13962011515: 如何写出好看的python代码 -
尔范欣乐: 如果import的包特别多,我也会import os , sys至于怎样的代码是好看/不好看的,很难有一个yes 和no,每个人的代码风格都是不同的,特别是在团队开发中,有的人喜欢用大量的列表推导,字典推导,等等奇技淫巧的语法糖让代码变得飘逸简洁,有的人喜欢直白的写就很清爽,因此为了让team里的代码风格保持一致,遵循pep8是最简单可行的方式.

化隆回族自治县13962011515: 如何像Python高手一样编程 -
尔范欣乐: 一、Python之禅(The Zen of Python) The Zen of Python是Python语言的指导原则,遵循这些基本原则,你就可以像个Pythonista一样编程.具体内容你可以在Python命令行输入import this看到: The Zen of Python, by Tim Peters Beautiful is ...

化隆回族自治县13962011515: 如何规范的编写python代码 -
尔范欣乐: PEP8 Python 编码规范 一 代码编排1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在操作符的后边敲回车.3 类和top-level...

化隆回族自治县13962011515: 怎样更好地提高自身的 Python 水平 -
尔范欣乐: 随着移动互联网的普及,服务器运维所面临的挑战也随之越来越大.当规模增长到一定程度,手动管理方式已经无法应对,自动化运维成为解决问题的银弹.Python凭借其灵活性,在自动化运维方面已经被广泛使用,能够大大提高运维效率,服...

化隆回族自治县13962011515: 如何进行Python 代码编写 -
尔范欣乐: 它消除了副作用(或者至少对一些特殊领域,例如单一体,有一些牵制作用).绝大部分程序错误 -- 和促使程序员求助于调试来解决的问题 -- 之所以会发生,是因为在程序执行过程期间,变量包含了意外的值.函数程序只不过根本就不为变量分...

化隆回族自治县13962011515: 怎样构建一个完整的python程序 -
尔范欣乐: 演示这个框架的 API:from diy_framework import App, Router from diy_framework.http_utils import Response # GET simple route async def home(r):rsp = Response() rsp.set_header('Content-Type', 'text/html') rsp.body = 'test' return rsp

化隆回族自治县13962011515: 如何编写第一个python程序 -
尔范欣乐: 现在,了解了如何启动和退出Python的交互式环境,我们就可以正式开始编写Python代码了.在写代码之前,请千万不要用“复制”-“粘贴”把代码从页面粘贴到你自己的电脑上.写程序也讲究一个感觉,你需要一个字母一个字母地把代码自...

化隆回族自治县13962011515: python代码格式怎么写比较好 -
尔范欣乐: 建议就是用python的编辑器来进行python代码的编写,这样可以避免由于代码缩进问题给你带来的困扰,一般编辑器都会在保存代码的时候自动的检查出代码的缩进问题,很多 编辑器都会有自动的代码缩进功能

化隆回族自治县13962011515: 怎么用python编写好玩的程序 -
尔范欣乐: 猜数游戏.pyimport random, easygui number = random.randint(1, 99) guess = 0 tries = 0 easygui.msgbox("I have a secret, can you guess?It's a number from 1 to 99. I'll give you 7 tries.") while guess != number and tries < 7:guess = easygui....

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网