<strike id="gcwsi"></strike>
  • <ul id="gcwsi"></ul>

    千鋒教育-做有情懷、有良心、有品質的職業教育機構

    400-811-9990
    手機站
    千鋒教育

    千鋒學習站 | 隨時隨地免費學

    千鋒教育

    掃一掃進入千鋒手機站

    領取全套視頻
    千鋒教育

    關注千鋒學習站小程序
    隨時隨地免費學習課程

    上海
    • 北京
    • 鄭州
    • 武漢
    • 成都
    • 西安
    • 沈陽
    • 廣州
    • 南京
    • 深圳
    • 大連
    • 青島
    • 杭州
    • 重慶
    當前位置:哈爾濱千鋒IT培訓  >  技術干貨  >  Python 枚舉

    Python 枚舉

    來源:千鋒教育
    發布人:xqq
    時間:2023-11-08 12:46:03

    1.枚舉的定義

    首先,定義枚舉要導入enum模塊。

    枚舉定義用class關鍵字,繼承Enum類。

    用于定義枚舉的class和定義類的class是有區別【下一篇博文繼續分享】。

    示例代碼:

    fromenumimportEnum

    classColor(Enum):

    red=1

    orange=2

    yellow=3

    green=4

    blue=5

    indigo=6

    purple=7

    代碼分析:

    上面的代碼,我們定義了顏色的枚舉Color.

    顏色枚舉有7個成員,分別是Color.red、Color.orange、Color.yellow等。

    每一個成員都有它們各自名稱和值,Color.red成員的名稱是:red,值是:1。

    每個成員的數據類型就是它所屬的枚舉。【*注:用class定義的類,實際上就是一種類型】

    1.1定義枚舉時,成員名稱不允許重復

    fromenumimportEnum

    classColor(Enum):

    red=1

    red=2

    上面的代碼,就無法執行。提示錯誤:TypeError:Attemptedtoreusekey:'red'

    1.2默認情況下,不同的成員值允許相同。但是兩個相同值的成員,第二個成員的名稱被視作第一個成員的別名

    fromenumimportEnum

    classColor(Enum):

    red=1

    red_alias=1

    成員Color.red和Color.red_alias具有相同的值,那么成員Color.red_alias的名稱red_alias就被視作成員Color.red名稱red的別名。

    1.3如果枚舉中存在相同值的成員,在通過值獲取枚舉成員時,只能獲取到第一個成員

    fromenumimportEnum

    classColor(Enum):

    red=1

    red_alias=1

    print(Color(1))

    輸出結果為:Color.red

    1.4如果要限制定義枚舉時,不能定義相同值的成員??梢允褂醚b飾器@unique【要導入unique模塊】

    fromenumimportEnum,unique

    @unique

    classColor(Enum):

    red=1

    red_alias=1

    再執行就會提示錯誤:ValueError:duplicatevaluesfoundin:red_alias->red

    2.枚舉取值

    2.1通過成員的名稱來獲取成員

    Color['red']

    2.2通過成員值來獲取成員

    Color(2)

    2.3通過成員,來獲取它的名稱和值

    red_member=Color.red

    red_member.name

    red_member.value

    3.迭代器

    3.1枚舉支持迭代器,可以遍歷枚舉成員

    forcolorinColor:

    print(color)

    輸出結果是,枚舉的所有成員。Color.red、Color.orange、Color.yellow、Color.green、Color.blue、Color.indigo、Color.purple。

    3.2如果枚舉有值重復的成員,循環遍歷枚舉時只獲取值重復成員的第一個成員

    fromenumimportEnum

    classColor(Enum):

    red=1

    orange=2

    yellow=3

    green=4

    blue=5

    indigo=6

    purple=7

    red_alias=1

    forcolorinColor:

    print(color)

    輸出結果是:Color.red、Color.orange、Color.yellow、Color.green、Color.blue、Color.indigo、Color.purple。但是Color.red_alias并沒有出現在輸出結果中。

    3.3如果想把值重復的成員也遍歷出來,要用枚舉的一個特殊屬性__members__

    fromenumimportEnum

    classColor(Enum):

    red=1

    orange=2

    yellow=3

    green=4

    blue=5

    indigo=6

    purple=7

    red_alias=1

    forcolorinColor.__members__.items():

    print(color)

    輸出結果:('red',)、('orange',)、('yellow',)、('green',)、('blue',)、

    ('indigo',)、('purple',)、('red_alias',)

    4.枚舉比較

    4.1枚舉成員可進行同一性比較

    Color.redisColor.red

    輸出結果是:True

    Color.redisnotColor.blue

    輸出結果是:True

    4.2枚舉成員可進等值比較

    Color.blue==Color.red

    輸出結果是:False

    Color.blue!=Color.red

    輸出結果是:True

    4.3枚舉成員不能進行大小比較

    Color.red

    輸出結果出錯:TypeError:unorderabletypes:Color()

    以上內容為大家介紹了Python枚舉,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

    聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

    猜你喜歡LIKE

    python函數中的參數有哪些?

    2023-11-14

    python中pygal模塊如何使用?

    2023-11-14

    Python描述符中有哪三種方法?

    2023-11-14

    最新文章NEW

    如何使用python any()判斷多元素?

    2023-11-14

    python中doctest庫是什么?

    2023-11-14

    python模塊引入的三種方式

    2023-11-14

    相關推薦HOT

    更多>>

    快速通道 更多>>

    最新開班信息 更多>>

    網友熱搜 更多>>