编写高质量代码python_编写高质量代码——改善Python程序的建议 - Go语言中文社区

编写高质量代码python_编写高质量代码——改善Python程序的建议


5d9166a32ed1d333.jpg

建议1:理解Pythonic概念

·Pythonic定义

·pythonic:充分体现Python自身特色的代码风格。

·代码风格

·交换两个数字

利用Python的packaging/unpackaging机制。a, b = b, a

·遍历一个容器for i in alist:

do_sth_with(i)

·安全地关闭文件描述符with open(path, 'r') as f:

do_sth_with(f)

写出来的代码具有Python味,而不是看着像C语言代码。

·标准库

字符串格式化一般这样写:print("Hello %s!" % ('Tom',))

但是真正具有Pythonic的代码是这样的:print("{great} from {language}.".format(greet = 'Hello, World', language = 'Python'))

·Pythonic的库或框架

Flask:from flask import Flask

app = Flask(__name__)

@app.route('/')

def hello():

return "Hello, World!"

if __name__ == "__main__":

app.run()

建议2:编写Pythonic代码

·避免劣化代码

·避免只用大小写来区分不同的对象。

·避免使用容易引起混淆的名称。

·不要害怕过长的变量名称。

·深入认识Python有助于编写Pythonic代码

·掌握Python提供给我们的语言特性和库特性(Language Reference和Library Reference)。

·深入学习业界公认的比较Pythonic的代码,比如Flask、gevent和requests等。

·pep-8——Python编码风格指南。(其它还有:Pychecker、Pylint、Pyflakes等)

建议3:理解Python与C语言的不同之处(切忌用C语言的思维和风格来编写Python代码)

·“缩进”与“{}”

python使用严格的代码缩进方式分隔代码块。(unexpected indent错误)

·“与”

没有区别,注意转义。

·三元操作符“?:”

三元操作符的语法形式为:C?X:Y,表示当条件C为True时,取值X,C为False时,取值Y。在Python中的等价形式为X if C else Y。

·switch…case

Python没有像C语言的switch…case分支语句。

通过if…elif…else实现:if n == 0:

do_sth

elif n > 0:

do_sth

else:

do_sth

还可以通过跳转表实现。def f(x):

return {

0: "You typedzero.n",

1: "You are in top.n",

2: "n is an even number.n"

}.get(n, "Only single-digit numbers are allowedn")

建议4:在代码中适当添加注释(用来解释代码的功能、原因和想法;对于不再需要的代码应该直接删除而不是注释掉,可以使用版本控制工具找回代码)

·使用块或者行注释的时候仅仅注释那些复杂的操作、算法,还有可能别人难以理解的技巧或者不够一目了然的代码。

·注释和代码隔开一定的距离,同时在块注释之后最好能够多留几行空白再写代码。

·给外部可访问的函数和方法添加注释文档。注释要清楚地描述方法的功能,并对参数、返回值以及可能发生的异常进行说明,使得外部调用它的人员仅仅看docstring就能正确使用。较为复杂的内部方法也需要进行注释。(Pycharm可以帮助解决)

·推荐在文件头中包含copyright申明、模块描述等。(Pycharm可以帮助解决)

建议5:通过适当添加空行使得代码布局更为优雅合理

·在一组代码表达完一个完整的思路之后,应该用空白行进行间隔(if块、while块等)

·尽量保持上下文语义的易理解性(调用时最好调用者在上,被调用者在下)

·避免过长的代码行,每行最好不要超过80个字符。(Pycharm可以帮助解决)

·不要为了保持水平对齐而使用多余的空格

·一行不要有多个命令

·空格的使用能够在需要强调的时候警示读者,在疏松关系的实体间起到分隔作用,而在具有紧密关系的时候不要使用空格。

建议6:编写函数的4个原则

·函数设计要尽量短小,嵌套层次不宜过深。

·函数声明应该做到合理、简单、易于使用。

·函数参数设计应该考虑向下兼容。

·一个函数只做一件事情,尽量保证函数语句粒度的一致性。

建议7:将常量集中到一个文件

·constant.pyclass _const:

class ConstError(TypeError): pass

class ConstCaseError(ConstError): pass

def __setattr__(self, name, value):

if self.__dict__.has_key(name):

raise(self.ConstError, "Can't change const.%s" % name)

if not name.isupper():

raise(self.ConstCaseError, "const name %s is not all uppercase" % name)

self.__dict__[name] = value

import sys, const

sys.modules[__name__] = _const()

const.MY_CONSTANT = 1

const.MY_SECOND_CONSTANT = 2

const.MY_THIRD_CONSTANT = 'A'

const.MY_FORTH_CONSTANT = 'B'

·其他模块中引用from constant import const

print(const.MY_SECOND_CONSTANT)

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39616855/article/details/110397347
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-31 04:31:02
  • 阅读 ( 459 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢