编写高质量代码——改善Python程序的91个建议(Ⅰ)

7 篇文章 1 订阅
  • 建议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 allowed\n")
      
  • 建议4:在代码中适当添加注释(用来解释代码的功能、原因和想法;对于不再需要的代码应该直接删除而不是注释掉,可以使用版本控制工具找回代码)

    • 使用块或者行注释的时候仅仅注释那些复杂的操作、算法,还有可能别人难以理解的技巧或者不够一目了然的代码。
    • 注释和代码隔开一定的距离,同时在块注释之后最好能够多留几行空白再写代码。
    • 给外部可访问的函数和方法添加注释文档。注释要清楚地描述方法的功能,并对参数、返回值以及可能发生的异常进行说明,使得外部调用它的人员仅仅看docstring就能正确使用。较为复杂的内部方法也需要进行注释。(Pycharm可以帮助解决)
    • 推荐在文件头中包含copyright申明、模块描述等。(Pycharm可以帮助解决)
  • 建议5:通过适当添加空行使得代码布局更为优雅合理

    • 在一组代码表达完一个完整的思路之后,应该用空白行进行间隔(if块、while块等)
    • 尽量保持上下文语义的易理解性(调用时最好调用者在上,被调用者在下)
    • 避免过长的代码行,每行最好不要超过80个字符。(Pycharm可以帮助解决)
    • 不要为了保持水平对齐而使用多余的空格
    • 一行不要有多个命令
    • 空格的使用能够在需要强调的时候警示读者,在疏松关系的实体间起到分隔作用,而在具有紧密关系的时候不要使用空格。
  • 建议6:编写函数的4个原则

    • 函数设计要尽量短小,嵌套层次不宜过深。
    • 函数声明应该做到合理、简单、易于使用。
    • 函数参数设计应该考虑向下兼容。
    • 一个函数只做一件事情,尽量保证函数语句粒度的一致性。
  • 建议7:将常量集中到一个文件

    • constant.py

      class _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)
      

- 《编写高质量代码 改善Python程序的91个建议》张颖 赖勇浩 著。

  • 5
    点赞
  • 1
    评论
  • 17
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 数字50 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值