龙空技术网

Python随笔13:Python代码规范之程序设计规范

挂可挂 160

前言:

此时各位老铁们对“python规范pep8”大约比较注意,朋友们都需要学习一些“python规范pep8”的相关内容。那么小编同时在网摘上网罗了一些关于“python规范pep8””的相关知识,希望咱们能喜欢,大家快快来了解一下吧!

引言:每天习以为常的Python代码,是否符合Python的规范?想写出Pytonic风格的代码,却不知道如何开始?

这个“Python代码规范”系列将会解决这些规范性的问题。

注:本代码规范基于PEP8, 在PEP8的基础上做了一些改动。


Python代码规范之程序设计规范



避免'裸代码'

尽量不要直接将代码写在模块的顶层中,在执行主程序前应该总是检查 if __name__ == '__main__' ,这样当模块被导入时主程序就不会被执行。

# 不推荐的写法(裸代码)do_something()# 正确的写法def main(): do_something()if __name__ == '__main__': main()
所有的顶级代码在模块导入时都会被执行。要小心不要去调用函数,创建对象,或者执行那些不应该在使用pydoc时执行的操作。

字符串

尽量不要用+号拼接字符串,使用格式化字符串模板或join拼接。

# 不推荐的写法print("Spam" + " eggs" + " and" + " spam")# 正确写法, 使用 joinprint(" ".join(["Spam","eggs","and","spam"])) # 正确写法, 使用 %s 模板print(f"{'Spam'} {'eggs'} {'and'} {'spam'}")

列表和字典

在不复杂的情况下,尽量多用列表生成式,可以使代码更加清晰。

注意:复杂情况下不适用,列表生成式过复杂反而会导致阅读和调试困难。

# 不推荐的写法items = []for item in directory: items.append(item)# 正确的写法items = [item for item in directory]
尽量使用map和filter等内置函数,而不是自己去写循环。
numbers = [1, 2, 6, 9, 10 ...]# 不推荐的写法def even(numbers): evens = [] for number in numbers: if number % 2 == 0: evens.append(number) return even# 正确的写法def even(numbers): return filter(lambda x: x%2 == 0, numbers)

正则表达式

正则表达式前一律加r。

regex_phone = re.compile(r'(13\d|14[57]|15[^4,\D]))$')
正则表达式使用前尽量先编译好。
# 不推荐的写法, 不要使用未编译的正则result = re.match(r'(^(13\d|14[57]|15[^4,\D]))$', my_phone)# 正确的写法,使用前先编译regex_phone = re.compile(r'(13\d|14[57]|15[^4,\D]))$')if __name__ == '__main__': result = regex_phone.match(my_phone)

标签: #python规范pep8