赋值和判断相等想写在elif的一行上


def ck1_db(x):
    result = select col1 from tab1 where col1=x
    return result

def ck2_db(x):
    result = select col1 from tab2 where col1=x
    return result

很多类似的函数,一直到

def ckn_db(x):
    result = select col1 from tabn where col1=x
    return result


if ... :
    ...
else:
     ck1_in_db = ck1_db(a) #调动函数,查询数据库
     if len(ck1_in_db.index) != 0 如果数据库返回的有值,则进行下面的
         ...
     else:
         ck2_in_db = ck2_db(a)
         if len(ck2_in_db.index) != 0
         ...

但如果有很多这样的if else逻辑,缩进会越来越多。我想要以下的效果, 赋值和判断相等想写在elif的一行上:

if ... :
    ...
elif len((ck1_in_db = ck1_db(a)).index) != 0: 当然这有语法错误,但是否有写在一行的写法?
     
    ... 
elif len((ck2_in_db = ck2_db(a)).index) != 0: 
     
    ... 
...
elif len((ckn_in_db = ckn_db(a)).index) != 0: 
    ... 
else:
    ...

python3.8+版本新增一个“海象运算符” ==》 【:=】 “冒号”连接一个“等于”
举个例子:
s = 'abcd'
if (n:=len(s))>2: print(n)

另外python3.10.0版本新增了 match-case 分支结构可以取代多个elif的条件结构
例如:
match err:
case 1: print(1)
case 2: print(2)
case _: print(err)