iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
Software Development

Python GUI 專案設計模式及好用的開發技巧系列 第 28

程式中出現問號(?)跟冒號(:),這是什麼表達方式?

  • 分享至 

  • xImage
  •  

筆者最近在維護前人棄坑的C# 專案的程式碼看到?跟:,這是啥東西?

/images/emoticon/emoticon56.gif

一開始以為是lambda 在C#中的應用,後來經查詢後才發現是三元運算子

什麼是三元運算子呢?

三元運算子是由 兩個表達式 跟一個運算式組成,以C 為例 ,大約是下面的表達方式,但筆者是有看沒有懂

/images/emoticon/emoticon04.gif

hello ? monkey: money

以python 的呈現方式如下:


hello = monky if x.sayhello() else money

上面的敘述等同下面的寫法

if x.sayhello():
    hello = monky
else:
    hello = money

快速理解:
三元運算式 = 兩個表達式 加上一個運算元組成

事件為真 if 條件存在 else 事件為假

缺點:

  1. 條件分支只能為運算式,不支持多條陳述句
  2. 容易被濫用,很多人將其用于替代if陳述句或是簡化復雜的if嵌套,這會導致上一條中所描述的結果
    引用自三元運算子缺點

結論:
筆者覺得這可以讓原始碼變得更簡潔,但筆者在比較lambda 及三元運算子後 還是覺得lambda 比較好用跟好閱讀。 筆者目前在維護前人棄坑的專案中就發現三元運算式被濫用的情況,讓後續維護變成超痛苦。


上一篇
Python GUI 好用的設計觀念
下一篇
關於code signing [程式碼簽章] 這檔事 ...
系列文
Python GUI 專案設計模式及好用的開發技巧31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言