前言
春节前买了本《编写高质量代码 改善python程序的91个建议》
现在抽空翻翻,做个笔记
共有8个章节
本节是编程惯用法
8、利用assert来发现问题
assert expression1 ["," expression2]
当expression1值为False会引发AssertionError
expression2用来描述异常信息
例
assert x==y,"not equals"
9、数值交换不推荐使用中间变量
python的数值交换
x,y=y,x
速度要快
10、利用lazy evaluation的特性
仅在真正需要执行时才计算表达式的值
如
if x and y #x为False则不计算y
if x or y #x为True则不计算y
节省时间
11、理解枚举替代实现的缺陷
这是python3.4以前的事了
12、不推荐使用type进行类型检查
基于内建类型扩展的用户自定义类,type函数不能准确返回结果
古典类中,任意类的实例的type、返回结果都是<type ‘instance’>
13、尽量转换为浮点类型再做除法
这应该是学python的时候都会注意的事
再次声明做个提醒吧
14、警惕eval的安全漏洞
这就类似web注入sql注入等
变量指定不清带来安全隐患
15、使用enumerate获取序列迭代的索引和值
list = ['a','b','c','d','e']
for i,e in enumerate(list):
print("index:",i,"element:",e)
简洁,且具有一定的lazy
16、分清==与is的适用场景
is是比较两个对象在内存中是否拥有同一块空间
==用来检验两个对象的值是否相等
对于较小的字符串
python会保留值的副本
新的对象建立时指向该副本
于是==与is都返回True
17、考虑兼容性尽可能用Unicode
Unicode被称为万国码
常见的转换方式utf-8对不同范围的字符使用不同长度的编码
不同的编码之间经常产生冲突
所以注意
decode("utf-8")
encode("gbk")
这些编码转换的使用
源文件中注意声明
#!usr/bin/python
# -*- coding:<utf-8> -*-
18、构建合理的包层次来管理module
主要是from import和_init_.py的使用
结语
本节有些建议还不错
注意一下能节省时间减少错误