0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何解決冗長(zhǎng)的if...else條件判斷(下)

麥辣雞腿堡 ? 來(lái)源:Python都知道 ? 作者:Python都知道 ? 2023-09-12 17:06 ? 次閱讀

創(chuàng)建子類(lèi)

接下來(lái),我們將創(chuàng)建不同的類(lèi)來(lái)表示不同的條件,每個(gè)類(lèi)都會(huì)根據(jù)條件來(lái)執(zhí)行execute()方法來(lái)做某些事。

class Cat(Animal):
    def execute(self):
        print("say miao~miao~!")

class Dog(Animal):
    def execute(self):
        print("say wang~wang~!")

class Pig(Animal):
    def execute(self):
        print("say hang~hang~!")

在這里我們會(huì)用到對(duì)象的其中一個(gè)特性:繼承,我們繼承的基類(lèi)Animal,并且對(duì)execute()方法進(jìn)行了重寫(xiě).

構(gòu)建實(shí)例

我們可以用一個(gè)字典或者工廠方法來(lái)實(shí)現(xiàn)通過(guò)一個(gè)支付類(lèi)型來(lái)找到對(duì)應(yīng)的具體支付實(shí)例對(duì)象。

dict_name = {
     "cat": Cat(),
     "dog": Dog(),
     "pig": Pig(),
}

替換if else

創(chuàng)建一個(gè)函數(shù),利用dict_name字段的關(guān)鍵字條件調(diào)用不的類(lèi)執(zhí)行execute()方法.

def func(anmial):
  dict_name.get(animal).execute()

# 執(zhí)行函數(shù)
func("cat")
# 輸出:say miao~miao~!

func("dog")
# 輸出:say wang~wang~!

func("pig")
# 輸出:say hang~hang~!

使用這種方式可以更好的將代碼邏輯分離開(kāi)來(lái),比起冗長(zhǎng)的if else,直接使用func函數(shù)是不是看起來(lái)簡(jiǎn)單多了。

通過(guò)使用對(duì)象特性,我們將條件判斷從if...else語(yǔ)句中移出,代之以使用不同類(lèi)來(lái)實(shí)現(xiàn)不同的操作。這種方法的好處是,我們可以在代碼中更清楚地看到每個(gè)條件對(duì)應(yīng)的操作,特別是對(duì)于那種需要判斷很多中條件,提高了可讀性和可維護(hù)性。

最后,我想告訴大家的是,并不是什么場(chǎng)景都非要用類(lèi)的特性來(lái)解決 if...else 語(yǔ)句的。如果 if else 中的邏輯本來(lái)就很清晰,就沒(méi)必要生搬硬套用上面的方法去解決了,對(duì)此我們需要根據(jù)實(shí)際業(yè)務(wù)去隨機(jī)應(yīng)變。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4263

    瀏覽量

    62243
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4700

    瀏覽量

    68110
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4759

    瀏覽量

    84298
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言中if語(yǔ)句、if-else語(yǔ)句和switch語(yǔ)句詳解

    在C語(yǔ)言中,有三種條件判斷結(jié)構(gòu):if語(yǔ)句、if-else語(yǔ)句和switch語(yǔ)句。
    發(fā)表于 08-18 16:36 ?9172次閱讀
    C語(yǔ)言中if語(yǔ)句、if-<b class='flag-5'>else</b>語(yǔ)句和switch語(yǔ)句詳解

    C語(yǔ)言條件結(jié)構(gòu)的使用方法

    前面討論了簡(jiǎn)單的條件結(jié)構(gòu)。條件結(jié)構(gòu)用于實(shí)現(xiàn)需要判斷的情況,它以一個(gè)邏輯條件成立與否為條件,決定一個(gè)操作的執(zhí)行或不執(zhí)行,或執(zhí)行兩個(gè)不同的操作。
    發(fā)表于 11-02 11:27 ?1486次閱讀
    C語(yǔ)言<b class='flag-5'>條件</b>結(jié)構(gòu)的使用方法

    Linux Shell系列教程之Shell判斷 if else用法

      if ... elif ... else ... fi 格式  下面我就分別就這幾種格式來(lái)為大家詳細(xì)介紹。  一、Shell判斷語(yǔ)法之if ... else 格式  if ...
    發(fā)表于 09-03 14:20

    JavaScript 【4】 條件語(yǔ)句

    JavaScript if...Else 語(yǔ)句條件語(yǔ)句用于基于不同的條件來(lái)執(zhí)行不同的動(dòng)作。條件語(yǔ)句通常在寫(xiě)代碼時(shí),您總是需要為不同的決定來(lái)執(zhí)行不同的動(dòng)作。您可以在代碼中使用
    發(fā)表于 07-17 10:36

    HarmonyOS/OpenHarmony應(yīng)用開(kāi)發(fā)-ArkTS語(yǔ)言渲染控制if/else條件渲染

    ArkTS提供了渲染控制的能力。條件渲染可根據(jù)應(yīng)用的不同狀態(tài),使用if、elseelse if渲染對(duì)應(yīng)狀態(tài)的UI內(nèi)容。說(shuō)明:從API version 9開(kāi)始,該接口支持在ArkTS
    發(fā)表于 08-21 14:29

    FPGA學(xué)習(xí)系列:if-else與case

    的邏輯。?設(shè)計(jì)原理:?if...else 條件語(yǔ)句的作用是根據(jù)指定的端盤(pán)條件是否滿足來(lái)確定下一步要執(zhí)行的操作他們的書(shū)寫(xiě)格式如下(1)if (條件語(yǔ)句) ????(2)if(
    的頭像 發(fā)表于 06-01 16:59 ?1.1w次閱讀
    FPGA學(xué)習(xí)系列:if-<b class='flag-5'>else</b>與case

    python判斷語(yǔ)句的詳細(xì)說(shuō)明

    python判斷語(yǔ)句:if 1. 簡(jiǎn)單小例子 如果滿足條件 A,則執(zhí)行代碼塊 a,否則執(zhí)行代碼塊 b。類(lèi)似這樣的控制流程語(yǔ)句,稱(chēng)之為條件語(yǔ)句。 它的基本形式是 if 判斷
    的頭像 發(fā)表于 02-25 16:22 ?2297次閱讀

    利用Java 8的Function接口來(lái)消滅if...else

    在開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)使用if...else...進(jìn)行判斷拋出異常、分支處理等操作。這些if...else...充斥在代碼中嚴(yán)重影響了代碼代碼的美觀,這時(shí)我們可以利用Java 8的Function接口來(lái)消滅if...
    的頭像 發(fā)表于 04-21 10:23 ?2613次閱讀

    解鎖新姿勢(shì):干掉過(guò)多的if-else!

    這點(diǎn)非常容易理解,就是說(shuō)在業(yè)務(wù)邏輯里面,先把不符合條件的給先過(guò)濾掉,而不是層層嵌套if-else判斷
    的頭像 發(fā)表于 11-12 10:01 ?624次閱讀

    詳解Python條件語(yǔ)句

    在 Python 中,if...else 是一種條件語(yǔ)句,可以根據(jù)給定的條件執(zhí)行不同的操作。這個(gè)語(yǔ)句通常用于控制程序的流程。
    的頭像 發(fā)表于 04-19 15:39 ?750次閱讀

    在Python中的if...else條件語(yǔ)句介紹

    在 Python 中,if...else 是一種條件語(yǔ)句,可以根據(jù)給定的條件執(zhí)行不同的操作。這個(gè)語(yǔ)句通常用于控制程序的流程。
    的頭像 發(fā)表于 04-19 15:43 ?1065次閱讀

    代碼如何優(yōu)化掉多余的if/else?

    的if/else? 1. 提前 return 這是判斷條件取反的做法,代碼在邏輯表達(dá)上會(huì)更清晰,看下面代碼: if (condition) { // do something} else
    的頭像 發(fā)表于 06-22 10:01 ?729次閱讀
    代碼如何優(yōu)化掉多余的if/<b class='flag-5'>else</b>?

    Python條件條件語(yǔ)句

    )。if...else...搭配,若if語(yǔ)句為False,不執(zhí)行if的語(yǔ)句塊,而去else的語(yǔ)句塊。 1 #if...else...語(yǔ)句
    的頭像 發(fā)表于 09-12 16:45 ?534次閱讀

    何解冗長(zhǎng)if...else條件判斷(上)

    if...else...條件語(yǔ)句我相信學(xué)習(xí)python的童鞋們都喜歡用,例如下一面這一段 def func ( param ): if param == "cat" : print ( "這是一只
    的頭像 發(fā)表于 09-12 17:03 ?614次閱讀

    python if 多條件并列判斷

    Python中的if語(yǔ)句允許我們根據(jù)條件執(zhí)行不同的代碼塊。有時(shí)候我們需要同時(shí)判斷多個(gè)條件是否滿足,并根據(jù)結(jié)果執(zhí)行不同的代碼塊。在這篇文章中,我們將會(huì)進(jìn)行詳盡、詳實(shí)且細(xì)致的介紹。 首先,我們來(lái)看一
    的頭像 發(fā)表于 11-21 16:40 ?1578次閱讀