Python3代码规范之最少必要风格
2017-7-14 00:13:0 Author: mp.weixin.qq.com(查看原文) 阅读量:2 收藏

阅读约需 3分钟

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

写一个实例作为参考吧,这个例子改编自《Python核心编程》中第三章的基本风格示例。

Windows 10下运行结果:


py3example.py 示例代码:

http://git.oschina.net/sosly/codes/o0vxytb5qpiud6f12e7c866

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

http://www.runoob.com/python/python-2x-3x.html

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

  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. 统一的命名规则
    比如类名采首字母大写的方式命名,模块名、函数名、变量名采用小写加下划线的方式命名。

更多的编码风格建议,可以参考这篇文章《Python 编码规范(Google)》:

http://www.runoob.com/w3cnote/google-python-styleguide.html 

随着编码的增多慢慢体会就行,更多的参考资料我也会附在文末。

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

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

简单、清晰

  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://mp.weixin.qq.com/s?__biz=MzIxODYyNjczNA==&mid=2247483680&idx=1&sn=a8757a865904bc30788399b0f54194c6&chksm=97e6eee1a09167f7b3ce46a09ff7f07df707ec8736198d142fbf133e3543d9037ecbfdbf6c5f&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh