在看到python源码的时候,有一句关于or的用法,当时很疑惑,以前一直认为其用法类似与java中的"&&" 和 "||" ,返回的是boolean类型,结果当前是错误的,下面给大家分享一下python中的and和or关键字的用法。
概念描述:
空对象:None, "", [], (), {} 这些都是空对象,使用if、while等判断是都是类似于False的情况,反之就是非空对象
1、and
# 语法:[expression1] and [expression2] # 结果组合形式: # 1、expression1<空> : 当第一个表达式为空时,返回expression1的值,expression2不会执行; if __name__ == "__main__": print("" and "test") print(None and "test") print([] and "test") print({} and "test") print(() and "test") # 输出:"", None, [], {}, () # 2、expression1<非空> : # 2.1、expression2<空> : 返回expression1的值 if __name__ == "__main__": print("test" and None) print("test" and "") print("test" and ()) print("test" and {}) print("test" and []) # 输出:"", None, [], {}, () # 2.2、expression2<非空> :返回expression2的值 if __name__ == "__main__": print("test" and "testsuccess") print("test" and "OK") print("test" and (1,)) print("test" and {"test":"success"}) print("test" and [1,2]) # 输出:"testsuccess" ,"ok", (1,),{"test":"success"},[1, 2]
2、or
# 语法:[expression1] and [expression2] # 组合形式: # 1、expression1<非空> : 当第一个表达式为非空时,返回expression1的值。 if __name__ == "__main__": print("yes" or "ok") print((1,) or "ok") print([1, 2] or "ok") print({"name":"ok"} or "ok") # 输出:yes、(1,), [1, 2], {"name":"ok"} # 2、expression1<空> : 当第一个表达式为空时,返回expression2的值 if __name__ == "__main__": print("" or None) print(None or ()) print([] or {}) print(() or []) print(() or "") print("" or "yes") print(None or (1, 2)) print([] or {"test" : "success"}) print(() or [1, 2]) # 输出:None,(), {},[] ,"", "yes", (1,2),{"test" : "success"},[1,2]
3、总结
“or”和“and”都是返回最后执行的表达式的值,使用or时,先判断第一个表达式是否为空,如果第一个表达式为空,那么才会执行第二个表达式,从而返回第二个表达式的值;使用and时,如果第一个表达式为空,那么不需要执行第二个表达式,因此返回第一个表达式的值。有点类似一java中的"&&"和"||"的理念。简单概述就是如果使用or和and时,从左到右执行表达式,如果在执行某个表达式之后,就已经可以判断整体表达式是否为空,是否非空,那么之后的表达式就不会再执行。
本文出自 “java程序冥” 博客,请务必保留此出处http://793404905.blog.51cto.com/6179428/1558213
原文地址:http://793404905.blog.51cto.com/6179428/1558213