Поскольку Python 3.8, вы можете использовать выражение присваивания :
Мы присваиваем вывод кортежу out
и проверяем, является ли его первый элемент True
:
def myfunc(val):
if val > 0:
return [ True, val ]
else:
return [ False, val ]
if (out := myfunc(5))[0]:
print(out)
else:
print('That was False')
# [True, 5]
if (out := myfunc(-2))[0]:
print(out)
else:
print('That was False')
# That was False
К сожалению, мы не можем распаковать кортеж на лету:
if ((res, val) := myfunc(-2))[0]:
print(val)
else:
print('That was False')
File "<ipython-input-10-03724761d41a>", line 20
if ((res, val) := myfunc(-2))[0]:
^
SyntaxError: cannot use named assignment with tuple