本篇文章帶給大家的內容是關於Python中枚舉類型的詳解(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
Python 的原生類型中並不包含枚舉類型。為了提供更好的解決方案,Python 透過 PEP 435 在 3.4 版本中加入了 enum 標準函式庫。
枚舉類型可以看作是一種標籤或是一系列常數的集合,通常用於表示某些特定的有限集合,例如星期、月份、狀態等。在沒有專門提供枚舉類型的時候我們是怎麼做呢,一般就透過字典或類別來實現:
Color = { 'RED' : 1, 'GREEN': 2, 'BLUE' : 3, } class Color: RED = 1 GREEN = 2 BLUE = 3
這種來實現枚舉如果小心翼翼地使用當然沒什麼問題,畢竟是一種妥協的解決方案。它的隱憂在於可以被修改。
使用 Enum
更好的方式是使用標準函式庫提供的 Enum
類型,官方函式庫值得信賴。 3.4 之前的版本也可以透過 pip install enum
下載支援的函式庫。簡單的範例:
from enum import Enum class Color(Enum): red = 1 green = 2 blue = 3
枚舉成員有值(預設可重複),而枚舉成員具有友善的字串表示:
>>> print(Color.red) Color.red >>> print(repr(Color.red)) <color.red:> >>> type(Color.red) <enum> >>> isinstance(Color.green, Color) True</enum></color.red:>
枚舉類型不可實例化,不可變更。
定義枚舉
定義枚舉時,成員名稱不允許重複
class Color(Enum): red = 1 green = 2 red = 3 # TypeError: Attempted to reuse key: 'red'
成員值允許相同,第二個成員的名稱被視為第一個成員的別名
class Color(Enum): red = 1 green = 2 blue = 1 print(Color.red) # Color.red print(Color.blue) # Color.red print(Color.red is Color.blue)# True print(Color(1)) # Color.red 在通过值获取枚举成员时,只能获取到第一个成员
若要無法定義相同的成員值,可以透過unique 裝飾
from enum import Enum, unique @unique class Color(Enum): red = 1 green = 2 blue = 1 # ValueError: duplicate values found in <enum>: blue -> red</enum>
#枚舉取值
可以透過成員名稱來取得成員也可以透過成員值來取得成員:
print(Color['red']) # Color.red 通过成员名来获取成员 print(Color(1)) # Color.red 通过成员值来获取成员
每個成員都有名稱屬性和值屬性:
member = Color.red print(member.name) # red print(member.value) # 1
支援迭代的方式遍歷成員,依定義的順序,如果有值重複的成員,只取得重複的第一個成員:
for color in Color: print(color)
特殊屬性__members__
是一個將名稱對應到成員的有序字典,也可以透過它來完成遍歷:
for color in Color.__members__.items(): print(color) # ('red', <color.red:>)</color.red:>
#枚舉比較
枚舉的成員可以透過is
同一性比較或透過==
等值比較:
Color.red is Color.red Color.red is not Color.blue Color.blue == Color.red Color.blue != Color.red
枚舉成員不能進行大小比較:
Color.red <p><strong>#擴充枚舉IntEnum</strong></p><p>IntEnum 是Enum 的擴展,不同類型的整數枚舉也可以互相比較:</p><pre class="brush:php;toolbar:false">from enum import IntEnum class Shape(IntEnum): circle = 1 square = 2 class Request(IntEnum): post = 1 get = 2 print(Shape.circle == 1) # True print(Shape.circle = Request.post) # True
總結
enum 模組功能很明確,用法也簡單,其實現的方式也值得學習,有機會的話可以看看它的源碼。
#以上是Python中枚舉類型的詳解(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python列表切片的基本語法是list[start:stop:step]。 1.start是包含的第一個元素索引,2.stop是排除的第一個元素索引,3.step決定元素之間的步長。切片不僅用於提取數據,還可以修改和反轉列表。

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/刪除,2)儲存的二聚體和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,請考慮performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

choosearraysoverlistsinpythonforbetterperformanceandmemoryfliceSpecificScenarios.1)largenumericaldatasets:arraysreducememoryusage.2)績效 - 臨界雜貨:arraysoffersoffersOffersOffersOffersPoostSfoostSforsssfortasssfortaskslikeappensearch orearch.3)testessenforcety:arraysenforce:arraysenforc

在Python中,可以使用for循環、enumerate和列表推導式遍歷列表;在Java中,可以使用傳統for循環和增強for循環遍歷數組。 1.Python列表遍歷方法包括:for循環、enumerate和列表推導式。 2.Java數組遍歷方法包括:傳統for循環和增強for循環。

本文討論了版本3.10中介紹的Python的新“匹配”語句,該語句與其他語言相同。它增強了代碼的可讀性,並為傳統的if-elif-el提供了性能優勢

Python中的功能註釋將元數據添加到函數中,以進行類型檢查,文檔和IDE支持。它們增強了代碼的可讀性,維護,並且在API開發,數據科學和圖書館創建中至關重要。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。