2024-09-20 06:38:06 发布
网友
我正在浏览pyftpdlib的来源,我发现了这个:
pyftpdlib
if self.rejected_users and self.allowed_users: raise AuthorizerError("rejected_users and allowed_users options are mutually exclusive")
rejected_users和{}是列表。 让我困惑的是and运算符是如何对两个列表进行操作的。如果有人帮我,我会很感激的。在
rejected_users
and
Python中的所有对象都有一个布尔“值”;它们在布尔上下文中要么为真,要么为假。在
空列表是假的。这适用于所有序列和容器,包括元组、集合、字典和字符串。在
数字0也是假的,所以0、0.0、0j也都是假的,None和{}本身也是假的:
None
>>> bool([]) False >>> bool([1, 2]) True >>> bool(0) False >>> bool('') False
在布尔上下文中,其他所有内容都被视为true;因此not为空的列表为true,两个非空列表以及and也被视为true。在
您可以通过实现^{}并返回0使自定义类型看起来像空容器,或者通过实现^{}*并返回False来使自定义类型看起来像一个空容器,当实例是数值0的布尔等价物时。在
0
False
只需记住and和or的短路;如果第一个表达式锁定结果,则返回该值,第二个表达式将被完全忽略。对于and,这意味着在表达式x and y中,如果x是一个假值(如空列表),则忽略{},因为在这种情况下,整个表达式永远不可能是真的。对于x or y,如果x为真值,则忽略y。在
or
x and y
x
x or y
y
这些规则都包含在Boolean operations reference documentation中。在
在python3中,使用^{}代替。在
如果list_a为空,则list_a and list_b将计算为list_a,否则将计算为list_b。例如:
list_a
list_a and list_b
list_b
>>> [1] and [2] [2] >>> [] and [2] []
空列表的计算结果为False,非空列表的计算结果为True。在
True
if list1 and list2:
相当于:
if list1 is not empty and list2 is not empty:
if list1 is not empty and list2 is not empty
无
错误
任何数字类型的零,例如,0,0L,0.0,0j。
0L
0.0
0j
任何空序列,例如,'',(),[]。
''
()
[]
任何空映射,例如{}。
{}
如果类定义了 __nonzero__()或__len__()方法,当该方法返回整数0或bool值False时。
__nonzero__()
__len__()
所有其他值都被认为是真的,所以许多类型的对象都是真的。在
Python中的所有对象都有一个布尔“值”;它们在布尔上下文中要么为真,要么为假。在
空列表是假的。这适用于所有序列和容器,包括元组、集合、字典和字符串。在
数字0也是假的,所以0、0.0、0j也都是假的,}本身也是假的:
None
和{在布尔上下文中,其他所有内容都被视为true;因此not为空的列表为true,两个非空列表以及
and
也被视为true。在您可以通过实现^{} 并返回} *并返回
0
使自定义类型看起来像空容器,或者通过实现^{False
来使自定义类型看起来像一个空容器,当实例是数值0的布尔等价物时。在只需记住},因为在这种情况下,整个表达式永远不可能是真的。对于
and
和or
的短路;如果第一个表达式锁定结果,则返回该值,第二个表达式将被完全忽略。对于and
,这意味着在表达式x and y
中,如果x
是一个假值(如空列表),则忽略{x or y
,如果x
为真值,则忽略y
。在这些规则都包含在Boolean operations reference documentation中。在
在python3中,使用^{} 代替。在
如果
list_a
为空,则list_a and list_b
将计算为list_a
,否则将计算为list_b
。例如:空列表的计算结果为
False
,非空列表的计算结果为True
。在if list1 and list2:
相当于:
if list1 is not empty and list2 is not empty
:List of falsy values in python:
无
错误
任何数字类型的零,例如,
0
,0L
,0.0
,0j
。任何空序列,例如,
''
,()
,[]
。任何空映射,例如
{}
。如果类定义了
__nonzero__()
或__len__()
方法,当该方法返回整数0或bool值False时。所有其他值都被认为是真的,所以许多类型的对象都是真的。在
相关问题 更多 >
编程相关推荐