我有一个关于在Python如果没有X%Y:做一些
if not x % y:
# do something
下面的语句问题在一段代码见状和试验后我发现,如果模计算结果为任何东西,但零它”我会跳过“做某事”的代码。
我的问题是,是否存在关于If和If语句的隐含条件的一般规则,并且是否有像这样的Python“技巧”的好引用?
我对这个广泛的问题表示歉意,但是当我第一次看到它时,这让我产生了循环。我想尽可能多地学习这些简短的技巧!
我有一个关于在Python如果没有X%Y:做一些
if not x % y:
# do something
下面的语句问题在一段代码见状和试验后我发现,如果模计算结果为任何东西,但零它”我会跳过“做某事”的代码。
我的问题是,是否存在关于If和If语句的隐含条件的一般规则,并且是否有像这样的Python“技巧”的好引用?
我对这个广泛的问题表示歉意,但是当我第一次看到它时,这让我产生了循环。我想尽可能多地学习这些简短的技巧!
None
是错误的。0
为假""
是虚假的[]
,()
,并{}
(和其他空的容器)都是假的这可以在自己的类型定义__len__()
或__nonzero__()
(后者在Python 3名为__bool__()
)进行覆盖。你甚至可以定义,例如,评估为真零:
class trueint(int):
def __nonzero__(self):
return True
__bool__ = __nonzero__ # Python 3
truezero = trueint(0)
if truezero:
print("yep, this zero is true!")
你可能不应该做到这一点,因为这会混淆Python程序员,但你能。
Python中没有这样的“隐含条件”有真正的价值观,而且有错误的价值观。
这些假:
None
''
,u''
,b''
,[]
,()
),映射({}
),或套({,}
)__nonzero__()
方法返回false的对象除非另有证明,否则其他任何内容都应被视为真实。
这种行为称为感实性在Python:http://www.udacity.com/wiki/CS258%20Truthiness%20in%20Python
文档参考确认的答案[这里在第5.1节](http://docs.python.org/library/stdtypes.html#truth-value-testing) 。 – DSM