本文由我司收集整编,推荐下载,如有疑问,请与我司联系
python
中
and
和
or
用法
2017/05/05
0
在
Python
中,
and
和
or
执行布尔逻辑演算,如你所期待的一
样。但是它们并不返回布尔值,而是返回它们实际进行比较的值之一。
(类似
C++
里面的
和
||
的短路求值)
(在布尔环境中,
0
、
”
、
[]
、
()
、
{}
、
None
为假;其它任何东西都为真。但是可
以在类中定义特定的方法使得类实例的演算值为假。
)
and
实例:
[python] view plain copy print?
‘
a
’
and
‘
b
’
’
b
’
”and
‘
b
’
”
’
a
’
and
‘
b
’
and
‘
c
’
’
c
’
‘a’ and ‘b’’b’ ‘‘ and ‘b’’’ ‘a’ and ‘b’ and ‘c’’c’
从左到右扫描,返回第一个
为假的表达式值,无假值则返回最后一个表达式值。
or
实例:
[python] view plain copy print?
‘
a
’
or
‘
b
’
’
a
’
”or
‘
b
’
’
b
’
”or[]or{}{} ‘a’ or
‘b’’a’ ‘‘ or ‘b’’b’ ‘‘ or [] or{}{}
从左到右扫描,返回第一个为真的表达式值,无真值
则返回最后一个表达式值。
and-or
搭配:
[python]
view
plain
copy
print?
a=“betabin”
b=”python”
1andaorb
’
betabin
’
0andaorb
’
python
’
a
=
“betabin”
b
=
“python”
1
and
a
or
b’betabin’
0
and
a
or
b’python’
看起来类似于于我们C++中的条件运算符(
bool
?
a
:
b
)
,是的,当
a
为
true
的时候是一样的。但是,当
a
为
false
的时候,就明显不同了。
如果坚持要用
and-or
技巧来实现条件运算符的话,可以用种安全的方法:
[python]
view
plain
copy
print?
a=”“
b=”betabin”
(1and[a]or[b])[0]”
a
=
““
b
=
“betabin” (1 and [a] or [b])[0]’’
就是万能的
[]
,把
a
为假的可能性给抹杀掉,然后通过
[0]
再获得(因为要通过
[0]
获得元素,因此
b
也得加上
[]
)
。
这个
and-or
技巧主要在
lambda
中使用。
tips:
感谢大家的阅读,本文由我司收集整编。仅供参阅!