如何用if条件捕获函数返回值

2024-06-11 17:06:28 发布

您现在位置:Python中文网/ 问答频道 /正文

def func1():
    if my_api_success():
        return my_api_value
    else
        return None

x= 1 if func1() is None else func1()

我想捕获func1()的返回值。 有没有可能编写一行代码,而不调用func1()两次?你知道吗


Tags: 代码noneapireturnifisvaluemy
3条回答

如果没有条件,为什么不直接返回您要检查的条件值呢。你知道吗

或者你可以: X=func1()
如果X为无X=1

如果使用的是Python 3.8,则可以使用赋值表达式:

x = 1 if (value := func1()) is None else value

如果您使用的是早期的Python版本,则可以将next函数与一个生成器表达式一起使用,该生成器表达式迭代func1()的1元组,以实现与赋值表达式相同的效果:

x = next(1 if value is None else value for value in (func1(),))

最好的方法是按照@CharlieWindolf的建议来做,即使用:

x = func1() or 1

问题是它需要func1()返回python视为布尔值的值。你知道吗

要解决这个问题,您需要使用两行。你知道吗

y = func1()
x = 1 if y is None else y

在Python3.8中,这可以使用assignment expression实现,但我还没有测试它。你知道吗

x = 1 if (y := func1()) is None else y

相关问题 更多 >