和其他编程语言不同,Python有一套独特的编码风格,掌握Python的编码风格对于编写优美的代码至关重要。
微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩
本文是一篇快速了解Python编码风格的指南,了解Python编码风格将有助于写出清晰、一致、易懂的代码。
目录
简介
命名规则
是否使用空格?
一般准则
使用autopep8
库
PEP简介
PEP是Python Enhancement Proposal的缩写。PEP是向Python社区提供信息或描述Python或其过程或环境的新特性的设计文档。
有大量的PEP列表涉及不同的Python相关主题,但本文将只关注PEP 8,它是涉及Python编码风格约定的指南。它的目的是通过定义一套命名规则、制表符与空格的用法、最大行长度等准则,使代码更易读和一致。
然而,请记住,这些并不是规则,有时不遵循某个特定的准则是有意义的,可以通过链接查看一个示例:A Foolish Consistency is the Hobgoblin of Little Minds(/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds)
命名规则
首先来看一个简单的例子。对这两个函数有什么看法?
defsumEvenNumbers(numbers):even_sum=0forListNumberinnumbers:ifListNumber%2==0:even_sum+=ListNumberreturneven_sumdefsum_odd_nums(nums):OddSum=0forninnums:ifn%2==0:OddSum+=nreturnOddSum
如上所示,这个例子的最大问题是不一致。示例中有两个函数,一个是mixedCase
的,另一个是snake_case
的。在每个函数中定义的局部变量也有混合的命名方式。如果在一个大项目中,这种混合的不同的命名方式是不应该出现的。
这种情况的问题在于以下几个原因:
阅读代码的次数往往多于编写代码的次数,所以保持代码的简洁和易懂是很重要的。
在创建一个新的变量/函数/类时,可以少操心一件事,因为已经知道它应该是什么样子的,只需要想出一个描述性的名字。
当到处都是相同的命名模式时,写静态分析或自动化脚本会更容易。
由于这些原因,需要定义一些大家都能遵循的标准。
在PEP 8中,它为变量、类、函数和其他的推荐命名标准提供了一个准则。下面是其中的一些:
类:使用CamelCase
风格(例如:class InputManager
)。
函数和变量:使用snake_case
风格(例如:def sum_even_numbers(numbers)
或sum_even = 0
)
方法:与函数相同,如果是一个非公开的方法,则使用一个前导下划线(例如:def _calculate_intermediate_sum(self)
)。
常量:使用所有大写字母和下划线来分隔单词(例如:MAX_WIDTH = 10
)
是否使用空格?
下一个内容是空格的使用与否。这一点纯属美学范畴。
使用空格:
在二元运算符(=
,+=
,-=
,>
,>=
,<
,<=
,==
,等)的两侧留一个空格(例如:sum += 5
)。
在元组/列表中的逗号后使用一个空格(例如:ages= [12, 13, 14]
,coordinates = (4, 3)
)
在函数类型的提示中:在冒号后加一个空格,并在->
的两边加一个空格(例如:def sum_even(nums: List) -> int:
)
在函数签名中,当默认值与类型提示结合使用时,在=
周围使用白色空格(例如,def draw(scale: int = 1) -> None:
)。
不使用空格:
不要添加额外的空格来对齐运算符。
在元组/列表中的逗号之前。
紧靠小括号、大括号或圆括号内。
避免尾部使用空格。
如下所示是一些好与坏的例子:
#好例子age=20social_security_number=1111info[0]=(names[0],{'address':'somewhere'})heights=[180,178,195]#坏例子age=20social_security_number=1111info[0]=(names[0],{'address':'somewhere'})heights=[180,178,195]
一般准则
受限于篇幅,还有很多其他的准则本文仅简短提示一下内容(更详细的描述可以在PEP 8文档中找到)(/pep-0008/):
导入应该在单独的行中进行。
使用空格而不是制表符 (除非在代码库中已经使用了制表符,因为Python不允许混合使用空格和制表符)。
建议代码的最大行长为79个字符,注释或文档字符串为72个字符。
每个缩进级别使用4个空格。
使用autopep8
库
偶尔需要一些帮助,当涉及到遵循讨论过的标准时,首选库是autopep8
。这个工具会自动格式化Python代码以符合PEP 8风格指南,还可以指定格式化的程度以及在格式化时是否应该忽略一些规则 (由autopep8
修复的规则:/project/autopep8/#features)。
安装它:
pip install autopep8
使用它:
autopep8 --in-place --aggressive <filename>
如果在Visual Studio Code
上开发,建议使用Python扩展中的自动格式化功能,当保存文件时,它会在文件上运行autopep8
。
只需要在VSCode settings.json
文件中添加几行代码。下面是一个示例片段:
"python.formatting.autopep8Args":["--max-line-length=79","--ignore","E402"],"editor.formatOnSave":true,
推荐书单
《Python从入门到精通(第2版)》
《Python从入门到精通(第2版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术。全书共分23章,包括初识Python、Python语言基础、运算符与表达式、流程控制语句、列表和元组、字典和集合、字符串、Python中使用正则表达式、函数、面向对象程序设计、模块、异常处理及程序调试、文件及目录操作、操作数据库、GUI界面编程、Pygame游戏编程、网络爬虫开发、使用进程和线程、网络编程、Web编程、Flask框架、e起去旅行网站、AI图像识别工具等内容。所有知识都结合具体实例进行介绍,涉及的程序代码都给出了详细的注释,读者可轻松领会Python程序开发的精髓,快速提升开发技能。除此之外,该书还附配了243集高清教学微视频及PPT电子教案。
《Python从入门到精通(第2版)》【摘要 书评 试读】- 京东图书京东图书频道为您提供《Python从入门到精通(第2版)》在线选购,本书作者:明日科技,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!/13284890.html
精彩回顾
《领略数学之美,使用Python创建分形图案》
《使用Python进行自动化录屏》
《轻松完成异步任务,一文搞懂Python Celery》
《ChatGPT插件使用攻略,解锁互联网新体验》
《使用Python轻松创建Flask API后台任务》
《使用ChatGPT API创建Python文档,竟然如此简单》
《16 个必知必会的 Python 技巧,助你高效编程》
微信搜索关注《Python学研大本营》,加入读者群
访问【IT今日热榜】,发现每日技术热点