【python】effective python读书笔记
3、bytes, str, unicode的区别
二进制在python2中为str,在python3中为bytes。
unicode在python2中为unicode,在python3中为str。
两者转换关系如下:
二进制.decode('utf-8') = unicode
unicode.encode('utf-8') = 二进制
6、单次切片不能同时指定start end stride
如果stride为负,那么机制上会出问题
12、不要在for / while后面写else
两种合适的写法:
1、写函数,如果满足条件直接return
2、写循环,如果满足条件直接break
13、熟练使用try / except / else / finally
try有异常except,没有异常else,最终finally
15、闭包中使用外部变量
方法一:外面用个List / dict
方法二:写个类,然后用类变量
方法三:使用nonlocal,此方法不推荐
20、动态默认值的参数使用None
然后在函数内部init。函数的默认值只在函数init的时候跑一次,最好没有可变的参数。
21、只能使用关键字的参数
在位置参数的最后加入一个星号*(在python3中生效)
def safe_division(number, divisor, *, ignore_overflow=True, ignore_zero=True)