为什么Python代码要写得美观而明确?
一、为什么Python代码要写得美观而明确
写美观和明确的代码可以帮助更好地理解代码的意图和功能,使得以后的维护和更新工作变得更加容易。此外,美观和明确的代码也可以让其他人更容易阅读和理解你的代码,这对于团队协作或代码复用来说非常重要。最后,美观和明确的代码也可以帮助降低出错的概率,因为编写易读的代码可以使你更容易发现错误或潜在的问题。
所以,不仅仅是python,其他语言也是一样。这是一个态度,也是一个提高自己的方法,是一个循序渐进的而过程。
核心准则
缩进
优选使用4个空格。
目前几乎所有的IDE都是默认tab转为4个空格,没有大问题。
行的最大长度
79个字符。
曾经笔者认为这是个“过时”的建议,目前做开发基本都是大屏幕,写代码全屏的时候编辑器足以容纳120字符一行或者更长。但是如果要在web上比较两次提交的代码差异,显然是会导致代码换行,或者如果左右滑动,增加了比较的难度,在多年实践之后(2016-2020),所以目前还是使用建议的最大行长度。
导入
导入位于文件顶部,在文件注释之后。 导入通常是单独一行。
# Correct:
import os
import sys
# Wrong:
import sys, os
或者这样也是可以的:
# Correct:
from subprocess import Popen, PIPE
导入应该按照以下顺序分组:
标准库导入相关的第三方导入特定的本地应用/库导入 在每个导入组之间放一行空行。 推荐绝对导入,因为它们更易读;处理复杂包布局时明确的相对导入可以用来替代绝对导入,因绝对导入过于冗长。此外,根据实践经验,建议移除所有不必要的imports。
其他如有细节问题,查看文档
导入这部分,通过Python库isort可以完美解决(vscode默认使用isort),在vscode中isort的默认参数便完全符合上面的编码规范,这里介绍笔者一些个人的风格设置,通过设置isort的参数可以实现:
当from .. import …超过行长度限制时,重新起一行:–sl/–force-single-line-imports强制通过包名排序:–fss/–force-sort-within-sections并可设置为保存时自动排序imports,在vscode中配置为:
{
“editor.codeActionsOnSave”: {
“source.organizeImports”: true
},
“python.sortImports.args”: [
“–force-sort-within-sections”,
“–force-single-line-imports”
],
}
4 注释
切忌注释和代码不一致!!,这比没有注释更让人抓狂。 主要遵守以下要点:
修改代码时,优先修改注释;注释应该是完整的句子。所以名列前茅个单词首字母必须大写,除非是名列前茅个单词是小写字母开头的标识符;短注释可以不加句号结尾,完整句子的注释必须要句号结尾;注释每行以一个#加一个空格开头;块注释需要使用相同级别的缩进;行内注释则必须用至少两个空格和代码隔开;尽量让你的代码“会说话”,不写不必要的注释。文档字符串(a.k.a. “docstrings”)
为所有公共模块,函数,类和方法书写文档字符串。细节可以查看PEP 257。
对于docstrings,CLion有很好的支持,vscode可以通过插件实现Python Docstring Generator:
插件管理器搜索Python Docstring Generator安装即可使用方法很简单,在函数名后换行快捷键Ctrl+Shift+2即可,或者输入”””敲换行时也会自动添加该插件默认使用的风格是Google,通过对比一些开源算法库的文档,使用Google风格的比如TensorFlow,PyTorch,其文档的可读性并不如使用numpy风格的NumPy和SciPy,因此建议使用numpy风格。
延伸阅读:
二、python的可扩展性
可扩展性是属于 Python 的其他特性之一。在必要时,可以用其他语言编写 Python 代码的一部分,例如 C++。因此,Python 是一种可扩展的语言,这意味着它可以被扩展到其他语言。Python 可扩展的特性是指 Python 的部分代码可以用 C 或 C++ 来编写。这并不能增强语言 (语法、结构等等),但是它可以让你把 Python 和其他语言开发的库连接起来。这就是说,你可以将以其他语言编写的代码包含在你的 Python 源代码中。
相关推荐HOT
更多>>MySQL中id通常使用什么数据类型呢?
一、MySQL中id通常使用什么数据类型一般都是 int 自增设置为主键如果表大的话可以设置为 龙, 或者big int例如:‘id’int unsigned not null a...详情>>
2023-10-15 22:12:14关系型数据库是什么?
一、什么是关系型数据库关系型数据库是按照关系模型组织和存储数据的数据库。它使用表格(表)的形式来表示和存储数据,每个表代表一个实体,而...详情>>
2023-10-15 21:32:39设计移动端表单有哪些注意事项?
1、分布式表单iPhone目前主要的机型屏幕尺寸在4.7-5.8英寸,android的尺寸更多一些,但是总体上来说,移动端的载体手机屏幕不大,能承载的信息...详情>>
2023-10-15 21:06:48APP开发过程中需要注意什么?
一、APP开发过程中需要注意什么1、了解需求:商家和企业在开发app的时候,首先要了解市场需求,也就是用户的需求,这点是最重要的,想要app软件...详情>>
2023-10-15 20:00:34热门推荐
为什么索引过的字段排序速度会很快,原理是什么?
沸为什么Python开发世界持续被Django统治那么久?
热Binder到底是什么?
热MySQL中id通常使用什么数据类型呢?
新关系型数据库是什么?
设计移动端表单有哪些注意事项?
开发一个生鲜商城APP软件可以解决哪些问题?
APP开发过程中需要注意什么?
图数据库的应用有哪些优点?
数据库中的视图有什么用?
数据库丢失数据的原因是什么?
Mysql、SQLite、Mongo的区别?
LayoutInflater.inflate()方法两个参数和三个参数的区别?
为什么要用flow?