m0_61692415 2021-10-12 19:34 采纳率: 62.5%
浏览 32
已结题

赋值和判断相等想写在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:
    ...
  • 写回答

1条回答 默认 最新

  • Hann Yang 全栈领域优质创作者 2021-10-12 22:04
    关注

    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)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月20日
  • 已采纳回答 10月13日
  • 创建了问题 10月12日

悬赏问题

  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵