Effective Python笔记

第一章:用Pythonic方式来思考

第2条 PEP8

《Python Enhancement Proposal #8》8号Python增强提案。

空白:①4个空格代表tab ②每行<=79字符 ③分行后加4个空格 ④类中方法空1行,方法和类空2行

命名:①函数、变量、属性用小写字母和下划线组成 ②受保护用单下划线,私有用双下划线 ③类与异常用驼峰 ④模块级别常量用全大写 ⑤类中实例方法首个参数是self,表示改对象;类方法的首个参数是cls,表示该类。

表达式和语句:①not不要放在表达式前面 ② 采用if not list 判断列表是否为空③import放开头且使用绝对路劲引用(但可以form . import models)④import顺序按照标准库、第三方模块库、自用模块导入,每部分按字母顺序排列。

第3条:了解bytes、str、unicode区别

isinstance(obj, class)判断class类型是否是obj的(父)类

str.encode(‘utf-8’)转变为bytes类型 bytes.decode(‘utf-8’)转变为str类型

在读写文件中,默认是’utf-8’,如果使用二进制必须加上‘b’

python3 bytes是8位值的序列,str是包含Unicode字符序列。

python2 str是8位值的序列,unicode是包含Unicode字符序列。若str只包含7位ASCII,可以使用相关操作同时使用。

第4条:用辅助函数来取代复杂的表达式

repr(obj),将obj对象转换成字符串类型

or左边表达式为真则用左边的,否则用右边的 a = False or ‘1’ # a=1

if/else表达式 a = x if x>y else y

第5条:了解切割序列的办法

assert 表达式, 当表达式等于False时,抛出AssertionError

start或end索引越界也不会出问题

第6条:在单次切片操作内,不要同时指定start、end和stride

同时指定start、end和stride会导致代码难以阅读,stride尽量使用正值。

可考虑使用itertools模块中的islice。(第46条:使用内置算法与数据结构:)

第9条:用生成器表达式来改写数据量较大的列表推导

it = (x for x in range(20000))
next(it)

两个生成器可以串起来用,产生连锁反应。

第13条:合理利用try/except/else/finally

else后面的代码是在try顺利完成后才运行。

except用法

    exce
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值