Python 中良好的码风是什么样的

养成良好的码风是非常重要的,它可以帮助你编写出更加清晰、可读性更高的代码。我习惯的写法是这样的:

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python3
# coding=utf-8


def main():
...


if __name__ == "__main__":
main()

首行是 shebang,即指定执行方式,仅在 Linux 和 MacOS 有效。第二行是编码声明,指定源代码文件的编码格式。接下来定义了一个 main() 函数,脚本的主要内容应放在这个函数中。最后,通过 if __name__ == "__main__": 判断当前模块是否是主程序,如果是,则调用 main() 函数。

shebang

shebang 是指在 Unix 和类 Unix 操作系统中的脚本文件的第一行,用于指定执行该脚本的解释器。例如,在 Python 脚本中,shebang 通常为 #!/usr/bin/env python3,表示使用系统环境变量中的 Python 3 解释器来执行该脚本。

在 Windows 系统中,shebang 无效,因为 Windows 不支持这种机制。因此,在 Windows 系统中,通常不需要在 Python 脚本中添加 shebang。

添加 shebang 的好处是,可以在命令行中直接运行 Python 脚本,而不需要先进入 Python 环境。尤其是对于不熟悉 Python 的用户来说,添加 shebang 可以让他们更方便地运行你的脚本。

编码声明

在 Python2 中,源代码文件的编码格式默认为 ASCII,这会导致在源代码中无法使用非 ASCII 字符。因此,在 Python2 中,通常需要在源代码文件的开头添加编码声明,以指定源代码文件的编码格式。其实 # -*- coding: utf-8 -*- 这样的格式更常用一些,但其中的 -*- 是装饰作用,我更喜欢用 # coding=utf-8 这样的格式。

在 Python3 中,源代码文件的编码格式默认为 UTF-8,因此不需要再添加编码声明。但是,为了更好的兼容性,建议在 Python3 中也添加编码声明。尤其是对于 Windows7 系统,默认的编码格式为 GBK,如果源代码文件中包含非 GBK 字符,可能会导致运行错误。

程序入口

在 Python 中,建议将程序的入口函数命名为 main(),并在程序的最后调用它。这样做的好处是,可以方便地测试和调试程序,也可以让程序更加清晰和可读。而且在函数中的变量是局部的,相对于全局变量更为安全。而且在很多其他编程语言中,main 函数是程序的入口,保持同样的风格可以增加代码的可读性。

在 Python 中,if __name__ == '__main__': 是一个常见的惯用法,用于判断当前模块是否是主程序。如果当前模块是主程序,则执行 if 语句块中的代码;如果当前模块是被其他模块导入的,则不执行 if 语句块中的代码。这种做法的好处是,可以让模块既可以被其他模块导入使用,又可以独立运行。

引号

在 Python 中,字符串可以使用单引号 ' 或双引号 " 来表示。我习惯于使用双引号 " 来表示字符串,其实是个人风格的缘故,在 Black 代码格式化工具中,也默认使用双引号。为了代码的美观性,即使字符串内部包含双引号,我也会使用转义字符。

也有人喜欢用双引号来表示供人类阅读的字符串,用单引号来表示供机器阅读的字符串,这种格式也挺巧妙的,可以让字符串在无形中携带更多信息。

缩进

Python 使用缩进来表示代码块,而不是常用的大括号 {}。这在某种意义上可以增强代码的可读性,但有时候太多缩进会让代码显得冗长,网上有一张梗图,说的是 Python 程序员需要随身携带尺子,用来量缩进长度……但良好的码风不会让这种情况出现,通常 3 层缩进是最大长度,如果需要进一步缩进,就应该将代码拆分成多个函数,或使用一些高级技巧。

换行

在 Python 中,一行代码的长度通常不超过 79 个字符,超过 79 个字符的代码应该使用换行符 \ 来拆分成多行。这主要是为了提高代码的可读性,避免代码过长导致阅读困难。

如果是列表、元组、字典等数据结构,可以使用逗号 , 来拆分成多行,这样可以让代码更加清晰。

空白

在代码中合适的地方留白,可以让代码结构清晰很多,例如以逻辑块为间隔添加空行,在逗号之后添加空格,在运算符前后添加空格等。

需要强调的一点是,在代码注释中,请尽量使用英语,虽然 Python 支持中文注释,但 Python 的官方文档、社区和第三方库都是使用英语的,使用英语注释可以让你的代码更容易被他人理解和维护。如果要使用中文,请在英语单词和数字两边添加空格。不仅在代码注释中,在任何地方都应该养成这种习惯,这可以让你的文字看起来更具“呼吸感”,更美观和易于阅读。

总结

以上是我在 Python 编程中的一些良好码风,希望对大家有所帮助。当然,每个人的编程风格都有所不同,最重要的是保持代码的一致性和可读性。