python 短路逻辑和条件表达式

本文详细解释了Python中布尔运算符的短路逻辑特性,以及如何利用这一特性简化代码,特别是通过短路逻辑实现类似三元运算符的功能。此外,还展示了如何在用户输入场景下避免不必要的代码执行。

  布尔运算符有个有趣的特性:只有在需要求值时才进行求值。举例来说,表达式x and y需要两个变量都为真时才为真,所以如果x为假,表达式就会立刻返回false,而不管y的值(事实上各个语言都有这个特性)。实际上,如果x为假,表达式会返回x得值----否则它就返回y的值。这种行为被称为短路逻辑(short-circuit logic)或惰性求值(lazy evaluaion):布尔运算符通常被称为逻辑运算符,就像你看到的那样第2个值有时“被短路了”。这种行为对于or来说也同样适用。在表达式x or y中,x为真时,它直接返回x的值,否则返回y值。注意,这意味着在布尔运算符之后的所有代码都不会执行。

  这有什么用呢?它主要是避免了无用地执行代码,可以作为一种技巧使用,假设用户应该输入他/她的名字,但也可以选择什么都不输入,这时可以使用默认值‘<unknown>’。可以使用if语句,但是可以很简洁的方式:

  

name = raw_input('Please enter your name: ') or '<unknown>'

  换句话说,如果raw_input语句的返回值为真(不是空字符串),那么它的值就会赋给name,否则将默认的'<unknown>'赋值给name。

  这类短路逻辑可以用来实现C和Java中所谓的三元运算符(或条件运算符)。Python2.5中有一个内置的条件表达式,像下面这样:

  

a if b else c

  如果b为真,返回a,否则,返回c。(注意,这个运算符不用引用临时变量,就可以直接使用,从而得到与raw_input例子中同样的结果。)

转载于:https://www.cnblogs.com/skyhacker/archive/2012/01/22/2328815.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值