Python语言and-or的用法

【原】python语言的 and-or 常常被用来实现类C语言中的三元运算符 : ?   ,

更为骚气的写法是  xxx and xxx or xxx and xxx or xxx,这样就可以可以做到一行实现多个表达式啦。

Code:

(1) def  Judge(a):

      if   a  > 10:

         return   "big"

      elif  a > 5:

         return "middle"

      else:

         return "small"

 (2)   def   judge (b) : 

      return   b > 10  and  "big"  or  b > 5  and  "middle"  or "small"

(1)和(2)所实现的效果是一样的

 

但要注意的是 and-or 并不完全等价于三元运算符,因为a and b or c,

如果b是个假值,那么就将返回c(电脑比较懒惰- -!)

 

不过有技巧能够实现:

 def  choose(bool, a, b):

     return (bool  and  [a]  or  [b])[0]

如果bool为真就返回[a], 不然就返回[b].  真如上面说的 电脑很懒惰 对于and ,它会先

判断and前的值是否为真,如果为真, 那么xxx and xxx 就为真。

 

return结尾的[0]的作用是:使结果以数字输出而不是以列表输出  结果:  加[0]   7  不加[0]  [7]

例:choose(True, 0, 6)

  >>> 0

  choose(True, 7, 6)

 >>>7

     choose(False, 0, 6)

 >>>6

   choose(False, 7, 6)

 >>>6

如果不加[0]

     choose(True, 0, 6)

 >>>[0]

 

就这些了  

人生苦短   我用python   QAQ

加油吧!!!

 

参考地址:  http://python.jobbole.com/81233/


   

posted @ 2015-03-26 09:38  小黄人python  阅读(3461)  评论(0编辑  收藏  举报