枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。Python 的原生类型(Built-in types)里并没有专门的枚举类型,但是我们可以通过很多方法来实现它,例如字典、类等:WEEKDAY = {

'MON': 1,

'TUS': 2,

'WEN': 3,

'THU': 4,

'FRI': 5

}

class Color:

RED = 0

GREEN = 1

BLUE = 2

上面两种方法可以看做是简单的枚举类型的实现,如果只在局部范围内用到了这样的枚举变量是没有问题的,但问题在于它们都是可变的(mutable),也就是说可以在其它地方被修改从而影响其正常使用:WEEKDAY['MON'] = WEEKDAY['FRI']

print(WEEKDAY)

{'FRI': 5, 'TUS': 2, 'MON': 5, 'WEN': 3, 'THU': 4}

通过类定义的枚举甚至可以实例化,变得不伦不类:

c = Color()

print(c.RED)

Color.RED = 2

print(c.RED)

0

2

当然也可以使用不可变类型(immutable),例如元组,但是这样就失去了枚举类型的本意,将标签退化为无意义的变量:COLOR = ('R', 'G', 'B')

print(COLOR[0], COLOR[1], COLOR[2])

R G B

为了提供更好的解决方案,Python 通过 PEP 435 在 3.4 版本中添加了 enum 标准库,3.4 之前的版本也可以通过 pip install enum 下载兼容支持的库。enum 提供了 Enum/IntEnum/unique 三个工具,用法也非常简单,可以通过继承 Enum/IntEnum 定义枚举类型,其中 IntEnum 限定枚举成员必须为(或可以转化为)整数类型,而 unique 方法可以作为修饰器限定枚举成员的值不可重复:from enum import Enum, IntEnum, unique

try:

@unique

class WEEKDAY(Enum):

MON = 1

TUS = 2

WEN = 3

THU = 4

FRI = 1

except ValueError as e:

print(e)

duplicate values found in : FRI -> MON

try:

class Color(IntEnum):

RED = 0

GREEN = 1

BLUE = 'b'

except ValueError as e:

print(e)

invalid literal for int() with base 10: 'b'

python枚举是什么意思_什么是枚举python相关推荐

  1. python科学计算教程视频_【P14】Python科学计算与图形渲染库视频课程视频教程 it教程...

    Python视频教程名称: Python科学计算与图形渲染库视频课程视频教程 Python视频教程 [IT视频教程网-www.itspjc.com] it教程 6 T6 ^9 L+ E4 C, }0 ...

  2. 趣学python教孩子学编程_《趣学Python——教孩子学编程》学习笔记第1-3章

    第1章 Python不是大蟒蛇 1.1 关于计算机语言 计算机程序是一组让计算机执行某种动作的指令.软件就是计算机程序的集合. 一种编程语言就是一种特定的与计算机交谈的方式,这种方式使用计算机和人都能 ...

  3. python 鱼c工作室作业_#鱼C工作室Python作业#图解python百度云

    最好的python视频教程谁有 我这里有python全套高清教学视频,非常适合新手小白,真实分享,望采纳点赞. python 网盘 python视频教程从入门到精通 有提取码:提取码:8ste 求一个 ...

  4. python扩展库导入方式_使用pip安装Python扩展库的方法

    本文节选自作者的<Python编程基础及应用>视频教程.Python编程基础及应用_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com 使用pip进行安装 ...

  5. 学python去哪做项目_有哪些适合 Python 刚入门者去做的项目?

    学软件开发的都知道实战项目对于学好一门语言是很重要的.在这里可以向大家推荐几个Python实战项目 项目1.Python 图片转字符画 本课程用 50 行 Python 代码完成图片转字符画小工具.通 ...

  6. python程序不出结果_超详细的Python入门教程,1小时就可以学会

    为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是 ...

  7. python从外部传入参数_从另一个Python脚本运行一个Python脚本,并传入参数 - python...

    我想从另一个Python脚本运行一个Python脚本.我想像使用命令行一样传递变量. 例如,我将运行我的第一个脚本,该脚本将遍历值列表(0.1.2.3),并将其传递给第二个脚本,依次为script2. ...

  8. python可以在linux运行_在linux运行python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! linux下编译安装python3与python2共存linux下默认系统自带p ...

  9. python教程是什么课文_新手快速入门Python必看这篇文章

    Python是一门多种用途的编程语言,时常在扮演脚本语言的角色.一般来说,Python可定义为面向对象语的脚本语言:这个定义把面向对象的支持和全面的面向脚本语言的角色融合在一起.事实上,人们往往以&q ...

  10. python制作一个教学网站_小白如何入门Python? 制作一个网站为例

    首先最重要的问题是为什么要学习python?这个问题这个将指导你如何学习Python和学习的方式. 以你最终想制作一个网站为例.从一个通用的学习资源列表开始不仅会消磨你的激情,而且你获得的知识很难应用 ...

最新文章

  1. XCTF-MISC-新手区-SimpleRAR
  2. java 设计作业——简单计算器
  3. dockers log查询dockers的文件_Tomcat PUT方法任意文件上传
  4. 优先队列默认是小顶堆吗_一分钟带你读懂什么是堆?
  5. mysql n 识别_mysql – 不能有“不识别”的N:M关系吗?
  6. 马斯克回怼世粮署:能公开60亿美元花在哪 就立即卖股票捐款
  7. python 线程中出现执行错乱_python线程中的同步问题
  8. ogg启动报错libnnz11.so: cannot open shared object file
  9. 解决js跨域使用nginx配置问题
  10. 奶粉中的php是什么,婴儿配方奶粉的分类及用途
  11. ora-32004 oracle10,ORA-32004错误的解决方法
  12. sap 归档(ARCHIVE)
  13. 人工智能民主化无关紧要,数据孤岛以及如何建立一家AI公司
  14. MySQL 函数:IF(expr,v1,v2) 判断
  15. ASP.NET使用WPS WORD转PDF
  16. mac设置windows文件服务器,苹果MAC访问Windows共享文件夹的技巧
  17. 必须要了解的编程基础--哈希与字符串
  18. 主机远程登录报ssh_exchange_identification: read: Connection reset by peer
  19. Unity3D教程:如何利用Shader实现钻石渲染效果
  20. 给小学生科普计算机知识,小学生必懂的15个科普知识

热门文章

  1. Combination Sum II
  2. coso全称是什么_京东方全称是什么
  3. python html文本转为text文本
  4. [JS] js-xlsx生成Excel(模拟下载)
  5. 第几天(2018蓝桥杯-第一题)
  6. 移动硬盘接android手机吗,笔点说:智能手机可以直接连接移动硬盘读取数据吗?...
  7. echarts 桑基图
  8. Linux内核深入理解定时器和时间管理(6):x86_64 相关的时钟源(kvm-clock,tsc,acpi_pm,hpet)
  9. MaxEnt报错处理方法
  10. zblog主题,zblog主题制作,zblog网站模板主题