最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python模式匹配match case的實(shí)現(xiàn)

 更新時間:2025年10月01日 11:55:32   作者:Doris_2023  
Python 3.10 引入 match 語句,替代冗長的 if-elif 鏈,提升可讀性,支持精確匹配、守衛(wèi)條件、多值匹配、值綁定及解包操作,本文主要介紹了Python模式匹配match case的實(shí)現(xiàn)

核心概念

當(dāng)程序需要針對一個變量的多種可能值進(jìn)行判斷時,傳統(tǒng)的 if ... elif ... elif ... else 結(jié)構(gòu)會變得冗長且可讀性較差。Python 3.10 引入了 match 語句(也稱為模式匹配),它提供了一種更簡潔、更直觀的方式來處理多分支條件判斷。

1. 基本match語句

  • 功能:將一個目標(biāo)(如變量)與一系列模式(case)進(jìn)行比較,并執(zhí)行第一個匹配成功的分支。
  • 與傳統(tǒng)if對比
    • if 寫法 (冗長):
      score = 'B'
      if score == 'A':
          print('score is A.')
      elif score == 'B':
          print('score is B.')
      elif score == 'C':
          print('score is C.')
      else:
          print('invalid score.')
      
    • match 寫法 (清晰):
      score = 'B'
      match score:
          case 'A':
              print('score is A.')
          case 'B':
              print('score is B.')
          case 'C':
              print('score is C.')
          case _: # `_` 是通配符,匹配任何值
              print('invalid score.')
      
  • 關(guān)鍵點(diǎn)- case _: 必須放在最后,用于捕獲所有未被前面 case 匹配的情況,類似于 else。
    • 語法結(jié)構(gòu)更加規(guī)整,意圖更明確。

2. 復(fù)雜匹配模式

match 的強(qiáng)大之處在于其靈活的匹配模式,遠(yuǎn)不止簡單的相等判斷。

  • 帶守衛(wèi)條件的匹配:使用 ifcase 內(nèi)進(jìn)行額外條件檢查。
  • 多值匹配:使用 | (或)來匹配多個值。
  • 值綁定:在匹配的同時,將匹配到的值捕獲到變量中。

示例

age = 15

match age:
    case x if x < 10:         # 匹配所有小于10的值,并將其綁定到變量x
        print(f'< 10 years old: {x}')
    case 10:                  # 精確匹配單個值
        print('10 years old.')
    case 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18: # 匹配多個值
        print('11~18 years old.')
    case 19:
        print('19 years old.')
    case _:
        print('not sure.')

3. 高級應(yīng)用:匹配列表(解包匹配)

match 語句可以匹配復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如列表,并能進(jìn)行解包操作,這使其功能非常強(qiáng)大。

示例:解析命令行參數(shù)

args = ['gcc', 'hello.c', 'world.c'] # 模擬用戶輸入的命令

match args:
    # 模式1: 列表只包含一個元素'gcc'
    case ['gcc']:
        print('gcc: missing source file(s).')

    # 模式2: 列表第一個元素是'gcc',第二個是任意值(綁定到file1),后面是0個或多個值(綁定到files)
    case ['gcc', file1, *files]:
        print(f'gcc compile: {file1}, {", ".join(files)}')

    # 模式3: 列表只包含一個元素'clean'
    case ['clean']:
        print('clean')

    # 默認(rèn)情況
    case _:
        print('invalid command.')
  • *files:這是一個通配符,它可以捕獲列表中的零個或多個剩余元素。這使得匹配可變長度的列表變得非常簡單。
  • 工作原理match 會按順序嘗試匹配每個 case 的模式。例如,對于 ['gcc', 'hello.c', 'world.c'],它會匹配第二個模式,并賦值 file1 = 'hello.c'files = ['world.c']

總結(jié)要點(diǎn)

  1. 為什么使用 match:替代冗長的 if-elif-else 鏈,極大地提高代碼的可讀性和簡潔性,尤其是在處理多個枚舉值或復(fù)雜數(shù)據(jù)結(jié)構(gòu)時。
  2. 基本語法:使用 match TARGET: 和一系列 case PATTERN: 進(jìn)行匹配。
  3. 強(qiáng)大功能
    • 精確匹配case 'A':
    • 或匹配case 11 | 12 | 13:
    • 守衛(wèi)條件case x if x < 10:
    • 通配符case _: (匹配任何值)
    • 解包匹配case ['cmd', arg1, *args]: (匹配并提取列表內(nèi)容)
  4. 適用場景:處理狀態(tài)碼、命令解析、處理JSON或嵌套數(shù)據(jù)等任何需要多分支判斷的場景。

match 語句是Python現(xiàn)代化的重要特性,掌握它可以讓你的代碼更加優(yōu)雅和Pythonic。

將之前的練習(xí)題 重新寫一寫

hight = 1.50
weight = 50.5
bmi = weight / hight ** 2
print("bmi=", bmi)

match bmi:
    case _ if bmi < 18.5:
        print("過輕")
    case _ if 18.5 <= bmi < 25:
        print("正常")
    case _ if 25 <= bmi < 28:
        print("過重")
    case _ if 28 <= bmi < 32:
        print('肥胖')
    case _:
        print("嚴(yán)重肥胖")

到此這篇關(guān)于Python模式匹配match case的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python模式匹配match case內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

东乡| 赤壁市| 灵寿县| 盘山县| 奇台县| 盈江县| 石景山区| 巴林右旗| 海城市| 延吉市| 双桥区| 措美县| 正镶白旗| 桑植县| 锡林浩特市| 威远县| 莲花县| 随州市| 陈巴尔虎旗| 渝中区| 白水县| 建昌县| 漳州市| 亳州市| 米泉市| 大渡口区| 福海县| 策勒县| 石楼县| 平遥县| 长春市| 徐水县| 政和县| 手游| 武乡县| 托里县| 肇东市| 玉树县| 临高县| 定西市| 洛宁县|