atp*_*atp 28 python operators logical-operators
我正在观看2007年关于高级Python或理解Python的视频,并且在18'27"发言者声称"有些人可能知道在Python中and
并or
返回两个值中的一个,而not
返回总是一个布尔值."这是什么情况下的情况?
据我所知,and
并or
返回布尔.
Fré*_*idi 47
在and
和or
运营商做回自己的一个操作数,而不是一个纯粹的布尔值类似True
或False
:
>>> 0 or 42
42
>>> 0 and 42
0
Run Code Online (Sandbox Code Playgroud)
而not
始终返回纯布尔值:
>>> not 0
True
>>> not 42
False
Run Code Online (Sandbox Code Playgroud)
Reu*_*ani 16
来自Python文档:
如果参数为false,则运算符不产生True,否则返回False.
表达式x和y首先计算x; 如果x为false,则返回其值; 否则,将评估y并返回结果值.
表达式x或y首先评估x; 如果x为真,则返回其值; 否则,将评估y并返回结果值.
Python的or
运算符返回第一个Truth-y值或最后一个值,然后停止.这对于需要回退值的常见编程分配非常有用.
像这个简单的一个:
print my_list or "no values"
Run Code Online (Sandbox Code Playgroud)
这将打印my_list
,如果它有任何内容.否则,它将打印no values
(如果列表为空,或者它是None
......).
一个简单的例子:
>>> my_list = []
>>> print my_list or 'no values'
no values
>>> my_list.append(1)
>>> print my_list or 'no values'
[1]
Run Code Online (Sandbox Code Playgroud)
and
当你想要一个警卫而不是一个后备时,使用返回第一个假y值或最后一个值并停止的赞美.
像这个:
my_list and my_list.pop()
Run Code Online (Sandbox Code Playgroud)
这很有用,因为您不能使用list.pop
on None
或者[]
列表中常见的先前值.
一个简单的例子:
>>> my_list = None
>>> print my_list and my_list.pop()
None
>>> my_list = [1]
>>> print my_list and my_list.pop()
1
Run Code Online (Sandbox Code Playgroud)
在这两种情况下都返回了非布尔值,并且没有引发异常.
归档时间: |
|
查看次数: |
17836 次 |
最近记录: |