博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3基础系列——枚举类型大揭秘
阅读量:4619 次
发布时间:2019-06-09

本文共 2917 字,大约阅读时间需要 9 分钟。

为什么使用枚举

枚举类型是定义常量的一种最优选择。

常量的广义概念是:不变化的量

对于常量的通俗比喻——如同大山不被轻而易举地改变

地球上的重力加速度到海枯石烂也会改变人们使用的常量是时间不很漫长的那一段时期基本上不会改变的量真空状态中的光速是常量理论上不可改变,是常量

看下图:采用直接定义、类定义、字典定义常量,均可以改变常量的值,达不到永恒不变的要求,另外没有防止相同类型的功能,也就是可以取同一个值,Monday = 1,Friday = 1。

1372901-20181030092959834-1951456610.jpg

枚举类型的优势

优势1:定义的量不可改变

1372901-20181030093016831-273333697.jpg

优势2:可以防止同一类型取相同的值

1372901-20181030093030835-834442409.jpg

枚举类型的使用

  • 枚举的类型
  • 枚举的name
  • 枚举的value
from enum import Enumclass week(Enum):    Monday = 1    Monday_alias = 1    Tuesday = 2    Wednesday = 3    Thursday = 4    Friday = 5    Saturday = 6    Sunday = 7print('----访问名字---')print(week.Monday_alias.name)print('----访问值---')print(week.Friday.value)print('----访问类型---')print(week['Saturday'])print(week.Friday)print('---循环所有类型简洁----')for w in week.__members__:    print(w)print('----循环所有类型复杂---')for w in week.__members__.items():    print(w)print('---循环不重复值的类型----')for w in week:    print(w)

结果

----访问名字---Monday----访问值---5----访问类型---week.Saturdayweek.Friday---循环所有类型简洁----MondayMonday_aliasTuesdayWednesdayThursdayFridaySaturdaySunday----循环所有类型复杂---('Monday', 
)('Monday_alias',
)('Tuesday',
)('Wednesday',
)('Thursday',
)('Friday',
)('Saturday',
)('Sunday',
)---循环不重复值的类型----week.Mondayweek.Tuesdayweek.Wednesdayweek.Thursdayweek.Fridayweek.Saturdayweek.Sunday

枚举类型拓展

定义方式1

from enum import Enumweek = Enum('week', ('Monday', 'Tuesday', 'Wednesday', 'Thursday',                     'Friday', 'Saturday', 'Sunday'))for name, member in week.__members__.items():    print("名字{},=》,成员{},值{}".format(name, member, member.value))

结果

名字Monday,=》,成员week.Monday,值1名字Tuesday,=》,成员week.Tuesday,值2名字Wednesday,=》,成员week.Wednesday,值3名字Thursday,=》,成员week.Thursday,值4名字Friday,=》,成员week.Friday,值5名字Saturday,=》,成员week.Saturday,值6名字Sunday,=》,成员week.Sunday,值7

定义方式2

from enum import Enum, unique@unique  # @unique这个装饰器是帮我们检查是否有重复的值。class week(Enum):    Monday = 1    # Monday_alias = 1  如果有这个语句,程序运行出错    Tuesday = 2    Wednesday = 3    Thursday = 4    Friday = 5    Saturday = 6    Sunday = 7for name, member in week.__members__.items():    print("名字{},=》,成员{},值{}".format(name, member, member.value))

结果

名字Monday,=》,成员week.Monday,值1名字Tuesday,=》,成员week.Tuesday,值2名字Wednesday,=》,成员week.Wednesday,值3名字Thursday,=》,成员week.Thursday,值4名字Friday,=》,成员week.Friday,值5名字Saturday,=》,成员week.Saturday,值6名字Sunday,=》,成员week.Sunday,值7

相关知识之enumerate

1372901-20181030093105922-100521343.jpg

enumerate()

enumerate()是一个内置函数,不用导入enumerate可用for循环,enumerate将其组成一个索引序列,利用它可以同时获得索引和值

代码1

week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]for num, day in enumerate(week):    print("索引:{},值:{}".format(num, day))

结果

索引:0,值:星期一索引:1,值:星期二索引:2,值:星期三索引:3,值:星期四索引:4,值:星期五索引:5,值:星期六索引:6,值:星期天

** 代码2**

week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]for num, day in enumerate(week, 1):     # 指定起始序号enumerate(week, 1)    print("索引:{},值:{}".format(num, day))

结果

索引:1,值:星期一索引:2,值:星期二索引:3,值:星期三索引:4,值:星期四索引:5,值:星期五索引:6,值:星期六索引:7,值:星期天

转载于:https://www.cnblogs.com/brightyuxl/p/9874915.html

你可能感兴趣的文章
熟悉常用的Linux命令
查看>>
易之 - 我是个大师(2014年3月6日)
查看>>
Delphi中窗体的事件
查看>>
file_get_contents()获取https出现这个错误Unable to find the wrapper “https” – did
查看>>
linux vi编辑器
查看>>
js树形结构-----(BST)二叉树增删查
查看>>
contract
查看>>
Python语言编程
查看>>
[poj 1469]Courses
查看>>
vue+element-ui实现表格checkbox单选
查看>>
测试开发学习进阶教程 视频&PDF
查看>>
C#基础-连接Access与SQL Server
查看>>
autofac
查看>>
MacOS 系统终端上传文件到 linux 服务器
查看>>
Excel导出POI
查看>>
兼容性
查看>>
自动执行sftp命令的脚本
查看>>
转 Merkle Tree(默克尔树)算法解析
查看>>
网络编程基础之socket编程
查看>>
各种浏览器的user-agent和
查看>>