所以我在网上看了一些code,我遇到了一条线(第286行):if depth > 0 and best <= -MATE_VALUE is None and nullscore > -MATE_VALUE:
我难以理解的部分是best <= -MATE_VALUE is None
。
所以我启动了解释器,看看value1 > value2 is value3
之类的语句是如何工作的。
所以我试过了
>>> 5 > 2 is True
False
>>> (5 > 2) is True
True
>>> 5 > (2 is True)
True
我的问题
为什么5 > 2 is True
不是{
谢谢。在
您可以看到python的操作符链正在工作
相当于
^{pr2}$你可以从中看出这一点
返回
True
。在首先,
5 > 2 is True
等价于(5 > 2) and (2 is True)
,因为python中有操作符链接(第5.9here)。在很明显,}。其他语句,如
5 > 2
的计算结果为True。但是,2 is True
将计算为False
,因为它没有隐式转换为bool
。如果强制转换,您将发现bool(2) is True
生成{if
-语句将为您完成此转换,因此if 2:
将起作用。在其次,
is
运算符和==
运算符(取自here)之间有一个重要区别:虽然这对本例没有直接的影响,但是您应该记住它以备将来使用。在
相关问题 更多 >
编程相关推荐