Вы можете комбинировать карту, фильтр и следующее:
def func1():
print("executed func1()")
return None
def func2():
print("executed func2()")
return 3
def func3():
print("executed func3()")
return None
functions = (func1,func2,func3)
call = lambda f:f()
result = next(filter(None,map(call,functions)),None)
print("result:",result)
вывод:
executed func1()
executed func2()
result 3
fun c 3 не выполняется
Если у ваших функций есть параметры, вы все равно можете использовать этот подход, создав список функций с лямбдами:
def func1(p1):
print(f"executed func1({p1})")
return None
def func2(p2a,p2b):
print(f"executed func2{(p2a,p2b)}")
return 3
def func3(p3):
print(f"executed func3({p3})")
return None
functions = [
lambda: func1(10),
lambda: func2("X",99),
lambda: func3(3.5)
]
call = lambda f:f()
result = next(filter(None,map(call,functions)),None)
print(result)
output:
executed func1(10)
executed func2('X', 99)
3