gpt4 book ai didi

函数中条件返回的 Pythonic 方式

转载 作者:行者123 更新时间:2023-12-03 00:17:15 32 4
gpt4 key购买 nike

我有几个函数返回数字或None。我希望我的包装函数返回第一个不是 None 的结果。除了下面的方法之外,还有其他方法吗?

def func1():
return None
def func2():
return 3
def func3():
return None

def wrapper():
result = func1()
if result is not None:
return result
result = func2()
if result is not None:
return result
result = func3()
if result is not None:
return result

我知道return func1() 或替代方案;它返回 func1() 的结果,除非它是 None,然后返回 alternative。在最理想的情况下,我会做类似的事情(伪代码):

return func1() or continue
return func2() or continue
return func3() or continue

最佳答案

您需要一个循环,它将返回它找到的第一个非 None 值。

def wrapper():
for f in [func1, func2, func3]:
result = f()
if result is not None:
return result

如果每个函数都返回 Nonewrapper 也会到达正文末尾,而无需显式返回

在 Python 3.8 或更高版本中略有缩短,

def wrapper():
for f in [func1, func2, func3]:
if (result := f()) is not None:
return result

您还可以使用any函数:

def wrapper():
if any((result := f()) is not None for f in [func1, func2, func3]):
return result

(我更喜欢显式循环;YMMV。)

关于函数中条件返回的 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60621521/

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