1,374 views

Python3代码规范之最少必要风格

有一些基本的编码原则可以增加代码的可读性,方便阅读维护以及与他人交流。最近开始用Python3编码,发现使用的PyCharm内置了PEP8的风格检测程序,类似的代码规范检测还有Pychecker、Pylint、Pyflakes等。这些风格建议通常比较全面,但对于初学者可能没那么亲民。本文是想通过实例梳理几条简约的Python编码规范作为自己编码的参考,感觉"将代码写成诗句"也是一种美好的追求。

0x01 一个简单的实例讲解

写一个实例作为参考吧,这个例子改编自《Python核心编程》中第三章的基本风格示例。
实例
Windows 10下运行结果:
运行结果
py3example.py 示例代码

既然说到Python3了,其实从编码风格上和Python2.7并没有什么可说的差别,但是语法上是略有区别的,比如print语句没有了,取而代之的是print()函数。比如Python3.X源码文件默认使用utf-8编码,因此建议编写Python3代码时代码文件的格式也设置成utf-8,这样其实对中文的处理会方便一些。这些语法差异会导致写法上的差别。想了解的话可以看这篇文章:《Python2.x与3.x版本区别》

那从这段代码实例中,我这里尽可能少地提炼几个简约的编码风格建议作为参考:

  1. 起始行
    在 Windows 下可以不写第一行注释,Linux下通常有两种写法。
    方法1:
    #!/usr/bin/python3
    这行注释注释意思是指向 python 的路径,告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器。
    方法2(推荐):
    #!/usr/bin/env python3
    这种用法先在 env(环境变量)设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作。

  2. 文档字符串
    可以用三对双引号""" """包含,可跨行,通常为对应模块的说明,和直接写注释#的区别是文档字符串可以通过module.__doc__访问,我们在例子中也测试了。
    当然必要的地方应注意加上注释#,最需要写注释的是代码中那些技巧性的部分

  3. import导入模块时每个一行
    导入模块比较多时,可以简单分类并依次导入。

  4. 每个Python文件都要写main函数
    不管这个Python文件是直接运行还是用来被导入。即使是一个打算被用作脚本的文件,也应该是可导入的,代码应该在执行主程序前总是检查 if __name__ == '__main__' , 这样当模块被导入时主程序就不会被执行。

  5. 全局变量应首先定义
    如实例中的debug = True

  6. 统一的命名规则
    比如类名采用首字母大写的方式命名,模块名、函数名、变量名采用小写加下划线的方式命名。
    如:class FooClass(object)def test()foo

更多的编码风格建议,可以参考这篇文章《Python 编码规范(Google)》,随着编码的增多慢慢体会就行,相关参考资料我也会附在文末。

0x02 Python之禅

有一个术语叫“Pythonic”,指的是以Python的方式去编写代码、组织逻辑和对象的行为。我们可以在Python解释器里输入 import this,从“Python之禅”开始探索“Pythonic”的含义。

运行结果

简单说来就是倡导编写Python代码应该:简单、清晰

0x03 参考资料精选

  1. Python2.x与3.x版本区别
    http://www.runoob.com/python/python-2x-3x.html

  2. Python 编码规范(Google简略版)
    http://www.runoob.com/w3cnote/google-python-styleguide.html

  3. Python 风格指南(Google详细版)
    http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/contents/


转载请注明出处 :sosly 菜鸟笔记
https://sosly.me/index.php/2017/07/13/python3example/

也欢迎关注微信公众号:sosly菜鸟笔记
sosly菜鸟笔记微信公众号

发表评论

电子邮件地址不会被公开。 必填项已用*标注