def func1():
if my_api_success():
return my_api_value
else
return None
x= 1 if func1() is None else func1()
我想捕获func1()
的返回值。
是否可以编写一行代码,而无需两次调用func1()
?
答案 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