Skip to main content
 首页 » 编程设计

python之一种更有效的使用 if 条件的 pythonic 方式

2025年05月04日20zfyouxi

我有这段检查条件的代码:

def is_important(data_row): 
    if data_row.get('important', None): 
        return True 
    add_data = get_additional_data(data_row) 
    for word in NEGATIVE_WORDS: 
        if word in add_data.lower(): 
            return False 
    for word in POSITIVE_WORDS: 
        if word in add_data.lower(): 
            return True 
    return False 

这很难理解(在我看来),所以我想知道是否有人可以建议一些更 pythonic 和更短的行?例如,我可以合并两个 for 循环吗?如果我合并两个 for 循环,它会消耗更多时间吗?

请您参考如下方法:

由于 any 很像您的显式循环,因此更紧凑并且短路。

def is_important(data_row): 
    if data_row.get('important', None): 
        return True 
    add_data = get_additional_data(data_row) 
    if any(word in add_data.lower() for word in NEGATIVE_WORDS):  # negative check takes precedence. 
        return False 
    if any(word in add_data.lower() for word in POSITIVE_WORDS): 
        return True 
    return False 

一些事情:

  • 为什么在搜索 NEGATIVE_WORDS 而不是 POSITIVE_WORDS 时调用 .lower()?
  • 如果 add_data 同时包含 NEGATIVE_WORDS 和 POSITIVE_WORDS,最后两个 if 的顺序将影响结果。这不是好的做法。