3 ways of Y?X:Z in python

C和java中的 A=Y?X:Z;到了python中有3中写法。

python中and和or运算符总会返回lhs或者rhs。所以有了在2.5版本之前常见的方式:

a=((X and Y) or Z) #前提,Y为真。
分析:
如果X为真,则(X and Y)返回Y,(Y or Z)也是返回Y;
如果X为假,则(X and Y)返回X,(X or Z)返回Z。

到了2.5版本后增加了bool布尔值的概念,所以可以这样用bool(value)函数:
A=[Z,Y][bool(X)]
bool(value)总会返回True或者False,这在python中等价于1或者0。

2.5版本同时新增了一个语法:
A=Y if X else Z

所以说python中有3中方式,第一种在2.5版本之前的代码中非常多见,同样的还有:
A=X or Y or Z or None
返回[X, Y, Z]中第一个不为None的值,如果全为None,则返回None。

参见:Learning Python 3rd 第12章。
同时推荐Learning Python这本书,别看讲的都是基础知识。但python生来就是和c/java不一样的,读了才知道同样的实现原来可以更python。对于想以python做母语的童鞋,那更非这本书莫数啦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值