gpt4 book ai didi

仅当变量不是 None 时才进行 if 语句比较的 Pythonic 方法

转载 作者:行者123 更新时间:2023-12-04 14:58:46 25 4
gpt4 key购买 nike

是否有更 pythonic 的方法来执行此 if block ?

def is_notification_needed(request: RiverPreference, gauge: Gauge) -> bool:
"""
Decides whether an email should be sent to the user or not based on their provided preferences.
:param request: RiverPreference dataclass
:param gauge: Gauge dataclass
:returns: boolean
"""
for preference in request:
if preference.level and preference.trend and preference.level >= gauge.level and preference.trend == gauge.trend:
return True
elif preference.level and not preference.trend and preference.level >= gauge.level:
return True
elif preference.trend and not preference.level and preference.trend == gauge.level:
return True
return False

preference.trendpreference.level 在用户不想设置时默认为 None。我希望仅在设置这些值后才能将这些值与仪表值进行比较。

最佳答案

首先,pythonic 的比较方式是 is not None,如果您的值可能是假的 (0),这一点很重要。

其次,你的缩进看起来不对,逻辑上有错别字,但我认为你的目标是在满足任何偏好的所有条件时返回 True,否则返回 False,通过检查否定会更简单。

    for preference in request:
if preference.level is not None and preference.level < gauge.level:
continue
if preference.trend is not None and preference.trend != gauge.trend:
continue
return True # NB: treats all-None as a match
return False

关于仅当变量不是 None 时才进行 if 语句比较的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67358164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com