2012-12-05 39 views
1
a = True 
obj = {some object} 

while a and obj: 
    doSomething() 
    certain if statements: 
    ^some of these will turn a False or obj to None 

^当a = True和obj存在时,这会继续运行吗?Bool逻辑+布尔和对象:

如果什么都是在同一时间错误 - 将假和无 - >评估为true,因此它保持运行还是会退出while循环

+1

python'None'与'False'同义。查看真值表也将有助于找出答案。 – sean

+0

@sean这是不正确的。 'bool(None)','bool(False)'和'bool(0)'都是假的,但是'None不是False'是真的。 – Kos

+0

我也不知道,但它仍然运行,即使没有不是假的 –

回答

1

可以,但“一”保持真实,它将运行OBJ存在

如果两个去假时,将评估为False

如果只是一个人去假它会评估为False

尝试写:

在你的Python解释器(False,并且无)

它会评估为False

+0

你假设对象没有实现'__bool__'(或者2.x中的'__nonzero__')。 –

+0

好的 - 谢谢 - 寻求帮助。该对象没有__bool__方法,所以我假定它使用Python的预先存在的方法。 –

+0

@Lattyware是的,我是 - 好点 –

3

如果两者都在同一时间错误是什么 - 将假和无 - >评估为真,因此继续运行还是会退出while循环

只要and操作数的至少一个计算结果为False,循环就会停止。因此,如果均为评估为False,循环也停止。

重要的是要注意,FalseNone不是唯一的东西,评估到False。有关详细信息,请参阅documentation