Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2789142
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: Python/Ruby

2013-03-04 11:06:39

bool ? a : b 表达式,这个表达式当 bool 为真时计算为 a,其它值则为 b

>>> a = "first" 

>>> b = "second"

>>> 1 and a or b 1

'first' 

>>> 0 and a or b 2

'second'

--这个语法看起来与C语言中的 bool ? a : b 相似。第一部分将在布尔环境中进行计算,它可以是任意Python表达式。如果计算为真,整个表达式的值为 a。

---如果第一部分计算为假,整个表达示的值为 b。

注意这个 and-or 技巧,bool and a or b,当 a 为假时,不会象C表达式 bool ? a : b 一样工作。

>>> a = "" 

>>> b = "second" 

>>> 1 and a or b 

'second'

因为 a 是一个空串,空串在一个布尔环境中被Python看成假值,这个表达式将“失败”,且返回 b 的值。如果你不将它想象成象 bool ? a : b 一样的语法,而把它看成纯粹的布尔逻辑,这样的话就会得到正确的理解。 1 是真,a 是假,所以 1 and a 是假。假 or b 是 b。






阅读(2626) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~