亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

核心概念

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

1. 基本match語句

  • 功能:將一個目標(如變量)與一系列模式(case)進行比較,并執(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)鍵點- case _: 必須放在最后,用于捕獲所有未被前面 case 匹配的情況,類似于 else
    • 語法結(jié)構(gòu)更加規(guī)整,意圖更明確。

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

match 的強大之處在于其靈活的匹配模式,遠不止簡單的相等判斷。

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

示例

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),如列表,并能進行解包操作,這使其功能非常強大。

示例:解析命令行參數(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')

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

總結(jié)要點

  1. 為什么使用 match:替代冗長的 if-elif-else 鏈,極大地提高代碼的可讀性和簡潔性,尤其是在處理多個枚舉值或復(fù)雜數(shù)據(jù)結(jié)構(gòu)時。
  2. 基本語法:使用 match TARGET: 和一系列 case PATTERN: 進行匹配。
  3. 強大功能
    • 精確匹配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("嚴重肥胖")

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

相關(guān)文章

  • Python中Async語法協(xié)程的實現(xiàn)

    Python中Async語法協(xié)程的實現(xiàn)

    這篇文章主要介紹了Python中Async語法協(xié)程的實現(xiàn),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Python matplotlib繪圖建立畫布及坐標系

    Python matplotlib繪圖建立畫布及坐標系

    這篇文章主要介紹了Python matplotlib繪圖建立畫布及坐標系,建立畫布 figsize,它用width和height來控制畫布的寬和高,下面來一起倆姐更多內(nèi)容吧
    2021-12-12
  • 如何利用python開發(fā)一款日志自動查找復(fù)制小工具

    如何利用python開發(fā)一款日志自動查找復(fù)制小工具

    本文介紹使用Python開發(fā)日志篩選工具,自動復(fù)制符合時間范圍(02:00-20:00)和大?。?gt;1KB)的日志至桌面,提升效率并減少遺漏,工具通過PyInstaller打包為exe,支持自定義圖標與版本信息
    2025-09-09
  • Python實現(xiàn)的石頭剪子布代碼分享

    Python實現(xiàn)的石頭剪子布代碼分享

    這篇文章主要介紹了Python實現(xiàn)的石頭剪子布代碼分享,本文和另一篇JavaScript實現(xiàn)的石頭剪刀布游戲源碼是姐妹篇,需要的朋友可以參考下
    2014-08-08
  • OpenCV圖像變換之傅里葉變換的一些應(yīng)用

    OpenCV圖像變換之傅里葉變換的一些應(yīng)用

    這篇文章主要給大家介紹了關(guān)于OpenCV圖像變換之傅里葉變換的相關(guān)資料,傅里葉變換可以將一幅圖片分解為正弦和余弦兩個分量,換而言之,他可以將一幅圖像從其空間域(spatial domain)轉(zhuǎn)換為頻域(frequency domain),需要的朋友可以參考下
    2021-07-07
  • 利用Python實現(xiàn)讀取照片的Exif信息

    利用Python實現(xiàn)讀取照片的Exif信息

    這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)讀取照片的Exif信息,文中的示例代碼簡潔易懂,具有一定的參考價值,有需要的小伙伴可以參考下
    2023-10-10
  • Windows切換python版本的超快捷方法(推薦!)

    Windows切換python版本的超快捷方法(推薦!)

    這篇文章主要介紹了在Windows中切換Python版本的快捷方法,通過編輯系統(tǒng)變量中的Path變量,可以快速切換到所需的Python版本,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • pandas聚合分組的具體使用

    pandas聚合分組的具體使用

    使用數(shù)據(jù)庫時,我們利用查詢操作對各列或各行中的數(shù)據(jù)進行分組,可以針對其中的每一組數(shù)據(jù)進行各種不同的操作,本文主要介紹了pandas聚合分組,感興趣的可以了解一下
    2024-03-03
  • Python讀取中文路徑出現(xiàn)亂碼的問題解決

    Python讀取中文路徑出現(xiàn)亂碼的問題解決

    本文主要介紹了Python讀取中文路徑出現(xiàn)亂碼的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Python中三種條件語句示例介紹

    Python中三種條件語句示例介紹

    大家好,本篇文章主要講的是Python中三種條件語句示例介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01

最新評論