Python中的条件分支控制流

一、条件分支语句惯用写法

1、不要显式地与布尔值做比较(if condition == True,这样写太蠢了!)
2、利用类型本身的布尔值规则,省略零值判断。
3、把not代表的否定逻辑移入表达式内部。
4、仅在需要判断某个对象是否为NoneTrueFalse时,使用is运算符。

二、Python数据模型

1、定义__len____bool__魔法方法,可以自定义对象的布尔值规则。
2、定义__eq__方法,可以修改对象在进行==运算时的行为。

三、代码可读性技巧

1、不同分支内容易出现重复或者类似的代码,将它们抽离到分支外可以提升代码的可读性。
2、使用德摩根定律——not A or not B等价于not (A and B) 可以让多重否定的表达式变得更容易理解。

四、代码可维护性技巧

1、尽可能让三元表达式保持简单。
2、扁平优于嵌套:使用提前返回优化代码中的多层分支嵌套。
3、当条件表达式变得特别复杂时,可以尝试封装新的函数和方法来简化。
4、and的优先级比or高,不要忘记使用括号让逻辑更加清晰。
5、在使用or运算符替代条件分支时,请注意避开因布尔值运算导致的陷阱:

context = {}
if extra_context is ot None:
	context.update(extra_context)
上述代码可以简化为:
context.update(extra_context of {})
所谓陷阱则是指:
timeout = config.timeout or 60
本身我们希望判断None,但是config.timeout为0的情况却被忽略并错误的配置为60

五、代码组织技巧

1、bisect模块可以用来优化范围类分支判断。
2、字典类型可以用来替代简单的条件分支语句。
3、尝试总结分支代码里的规律,用更精简、更易扩展的方式改写它们。
4、使用any()all()内置函数可以让条件表达式变得更精简。

参考内容:《Python工匠——案例、技巧与工程实践》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值