gpt4 book ai didi

python - 像 Python 的 "and"这样的短路评估,同时存储检查结果

转载 作者:IT老高 更新时间:2023-10-28 22:17:41 24 4
gpt4 key购买 nike

我有多个返回结果的昂贵函数。如果所有检查都成功,我想返回所有检查结果的元组。但是,如果一项检查失败,我不想调用后面的检查,例如 的短路行为。我可以嵌套 if 语句,但如果有很多检查,这将失控。如何获得 的短路行为,同时存储结果以备后用?

def check_a():
# do something and return the result,
# for simplicity, just make it "A"
return "A"

def check_b():
# do something and return the result,
# for simplicity, just make it "B"
return "B"

...

这不会短路:

a = check_a()
b = check_b()
c = check_c()

if a and b and c:
return a, b, c

如果有很多检查,这很困惑:

if a:
b = check_b()

if b:
c = check_c()

if c:
return a, b, c

有没有更短的方法来做到这一点?

最佳答案

只需使用一个普通的旧 for 循环:

results = {}
for function in [check_a, check_b, ...]:
results[function.__name__] = result = function()
if not result:
break

结果将是函数名称与其返回值的映射,您可以在循环中断后对这些值执行任何操作。

如果您想对所有函数都返回真实结果的情况进行特殊处理,请在 for 循环中使用 else 子句。

关于python - 像 Python 的 "and"这样的短路评估,同时存储检查结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39603391/

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