罗列范例能够看作是一种标签或是一系列常量的鸠合,一般用于示意某些特定的有限鸠合,比方礼拜、月份、状况等。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的细致内容,更多请关注ki4网别的相干文章!