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

时间:2019-05-02 21:10:51

标签: python python-3.x function

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

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

我想捕获func1()的返回值。 是否可以编写一行代码,而无需两次调用func1()

3 个答案:

答案 0 :(得分:2)

如果您使用的是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(),))

答案 1 :(得分:0)

执行此操作的最佳方法是使用@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

答案 2 :(得分:0)

为什么不尝试在无条件的情况下仅返回值就返回值。

或者您可以: X = func1()
如果X不为X = 1