Skip to main content
 首页 » 编程设计

python之'and' 和 'or' 的操作顺序是什么

2025年05月04日15tuyile006

在 Python 中是这样的:

def blackjack_check(hand): # hand is a tuple 
    winning_cards = [10,'Jack','Queen','King'] 
    if hand[0] in winning_cards and hand[1] == 'Ace': 
        return True 
    elif hand[0] == 'Ace' and hand[1] in winning_cards: 
        return True 
    else: 
        return False 

和这个一样吗?

def blackjack_check(hand): # hand is a tuple 
    winning_cards = [10,'Jack','Queen','King'] 
    if (hand[0] in winning_cards and hand[1]=='Ace' or  
        hand[0] == 'Ace' and hand[1] in winning_cards): 
        return True 
    else: 
        return False 

我可以使用第二个代码块而不是第一个吗?它会消除额外的 elif 语句,而且看起来更干净。 我关心的是“和”和“或”运算符的工作方式。两个“和”比较是分开的,“或”比较它们吗? 'and' 和 'or' 有运算顺序吗? 我运行了代码,它可以双向工作,但我想确保我准确理解运算符的工作原理。

请您参考如下方法:

是的,第二个代码块等同于第一个。根据the documentation , or 的优先级低于 and。这意味着 if 语句被评估为

if ((hand[0] in winning_cards and hand[1] == 'Ace') or  
    (hand[0] == 'Ace' and hand[1] in winning_cards)): 

这就是你想要的。

您可以返回该 bool 表达式的结果以缩短代码:

def blackjack_check(hand): 
    winning_cards = [10, 'Jack', 'Queen', 'King'] 
    return (hand[0] in winning_cards and hand[1] == 'Ace' or  
            hand[0] == 'Ace' and hand[1] in winning_cards)