文章标题 原创 翻译 转载 文章内容 读Effective Python的一些练习和记录 # 关于命名的建议 PEP 8 建议采用不同的方式来给 Python 代码中的各个部分命名,这样在阅读代码时, 就可以根据这些名称看出它们在 Python 语言中的角色。 * 函数、变量及属性用小写字母来拼写,各单词之间用下划线相连,例如:lowercase_underscore 。 * 受保护的实例属性,用一个下划线开头,例如:_leading_underscore 。 * 私有的实例属性,用两个下划线开头,例如:__double_leading_underscore 。 * 类(包括异常)命名时,每个单词的首字母均大写,例如:CapitalizedWord 。 * 模块级别的常量,所有字母都大写,各单词之间用下划线相连,例如:ALL_CAPS 。 * 类中的实例方法,应该把第一个参数命名为 self,用来表示该对象本身。 * 类方法的第一个参数,应该命名为 cls,用来表示这个类本身。 # 判断字符串或列表是否为空 ``` # 字符串 if len(s) == 0 # 列表 if len(ls) == 0 ``` 建议 ``` # 不为空 if s # 为空 if not s ``` # if else可以用or来简化代码(适合短语句) 如果or左边成立(整型不为0,字符串、列表不为空等)右边就不执行 ``` a = b or c ``` # list切片会生成新对象,有新地址,而引用不会 ``` a = [1, 2, 3] b = a c = a[:] a[0] = 'A' print(a) # ['A', 2, 3] print(b) # ['A', 2, 3] print(c) #[1, 2, 3] ``` # 遍历需要下标时用enumerate替代range ``` a = [x*100 for x in range(1, 10) if x % 2 == 0] for i, ele in enumerate(a): print(i, ele) print('enumerate替代range') for i in range(len(a)): print(i, a[i]) 输出: 0 200 1 400 2 600 3 800 ``` # 函数的参数不要是动态默认值 ``` def print_now(t=datetime.now()): print(t) print_now() time.sleep(1) print_now() 输出: 2022-11-26 21:30:39.749402 2022-11-26 21:30:39.749402 可以这样写: def print_now(t=None): t = t or datetime.now() print(t) ``` 文章类别 Python Mobile Android Java Shell Life Database Bug Windows IOS Tools Boost Node.js Mac Product Tips C/C++ Golang Javascript React Qt MQ MongoDB Design Web Linux LLM ChatGPT RAG AI 提交