昨天在构建条件语句时,我遇到了一个奇怪的优先规则。我的陈述是
if not condition_1 or not condition_2 and not condition_3:
我找到了
if True or True and False:
# Evaluates to true and enters conditional
在我的脑海中(以及之前使用其他语言的经验)and
条件应该具有优先权,因为语句被评估 - 所以语句应该等同于
if (True or True) and (False):
但事实上它是
if (True) or (True and False):
这对我来说似乎很奇怪?
答案 0 :(得分:1)
来自python wiki:
表达式x and y首先评估x;如果x为false,则返回值;否则,评估y并返回结果值。
表达式 x或y 首先评估x;如果x为真,则返回值;否则,评估y并返回结果值。
所以在你的情况下
if True or True and False:
由于口译员在True
之前遇到or
,因此不会继续and
表达并评估为True
答案 1 :(得分:0)
正如你所说and
有更高的偏好,所以带括号的表达式正是你所说的:
if (True) or (True and False)
由于此True or (anything)
True
为True
,因此结果为 $('label').click(function() {
$('.greyBtn').addClass('glow');
if ($('.greyBtn').data('clicked', true)) {
$('greyBtn').removeClass('glow');
} else if ($('.cancel').data('clicked', true)) {
$('greyBtn').remove.Class('glow');
}
});
。即使评估任何内容,也不在快捷评估中。