我在看一个2007 video on Advanced Python or Understanding Python,在18'27“,演讲者声称”在Python中,有些人可能知道and
和or
返回两个值中的一个,而not
总是返回布尔值。“什么时候出现过这种情况?
据我所知,and
和or
也返回布尔值。
发布于 2010-12-18 11:35:03
and
和or
运算符返回它们的一个操作数,而不是像True
或False
那样的纯布尔值
>>> 0 or 42
42
>>> 0 and 42
0
而not
总是返回一个纯布尔值:
>>> not 0
True
>>> not 42
False
发布于 2013-10-04 17:32:52
发布于 2015-02-04 12:21:51
如果运算符的参数为false,则运算符not生成True,否则返回False。
表达式x和y首先计算x;如果x为false,则返回其值;否则,计算y并返回结果值。
表达式x或y首先计算x;如果x为true,则返回它的值;否则,计算y并返回结果值。
Python的or
操作符返回第一个the y值或最后一个值,然后停止。这对于需要回退值的常见编程赋值非常有用。
就像这个简单的例子:
print my_list or "no values"
这将打印my_list
,如果其中有任何内容的话。否则,它将打印列表(如果list为空,或者它是None
...)。
一个简单的例子:
>>> my_list = []
>>> print my_list or 'no values'
no values
>>> my_list.append(1)
>>> print my_list or 'no values'
[1]
通过使用and
返回第一个False-y值或最后一个值并停止,当您想要一个保护而不是一个后备时,可以使用and
。
就像这样:
my_list and my_list.pop()
这很有用,因为您不能在None
或[]
上使用list.pop
,这是列表的常见先验值。
一个简单的例子:
>>> my_list = None
>>> print my_list and my_list.pop()
None
>>> my_list = [1]
>>> print my_list and my_list.pop()
1
在这两种情况下,都会返回非布尔值,并且没有引发异常。
https://stackoverflow.com/questions/4477850
复制