枚举的使用:
1.基本定义:
#类型
#->枚举
from enum import Enum
#枚举定义
class VIP(Enum):
TEST = 1
TE = 2
print(VIP.TEST)
print(VIP.TE)
结果:
VIP.TEST
VIP.TE
它的意义所在:关键需要的它的标签,而不是它的值。
枚举:它不可变、有防止相同标签的功能。
#枚举相关的操作
from enum import Enum
class VIP(Enum):
TE = 1
TES = 2
print(VIP.TE.value) # 获取标签值: 1
print(VIP.TES.name) # 获取标签名字: TES type: str
print(type(VIP.TES)) # 获取标签名字: TES type: enum
print(VIP['TES']) # 获取枚举类型
print('~~~~~~~``')
for v in VIP: #遍历
print(v)
结果:
1
TES
<enum 'VIP'>
VIP.TES
~~~~~~~``
VIP.TE
VIP.TES
枚举的比较:
#枚举的比较
from enum import Enum
class VIP(Enum):
TE = 1
TES = 2
res = VIP.TE == 1 #比较
#note : 枚举不支持大小 比较
res1 = VIP.TE is VIP.TE
print(res1) #身份比较
print(res)
结果:
True
False
枚举别名的使用:
#别名的使用
from enum import Enum
class VIP(Enum):
TE = 1
TES = 2
TES_TE = 2 # 如果数值一样,python 里不会把它当一个个体
'''
VIP.TE
VIP.TES
'''
for v in VIP:
print(v)
#得到数值一样的枚举
for v in VIP.__members__:
print(v)
'''
VIP.__members__:
TE
TES
TES_TE
VIP.__members__.items()
('TE', <VIP.TE: 1>)
('TES', <VIP.TES: 2>)
('TES_TE', <VIP.TES: 2>)
'''
闭包学习:
1.函数可以当成对象返回。例:
def cur_te():
a = 25
def cur(x):
return a * x * x
print('This is test')
pass
return cur
f = cur_te()
print(f.__closure__)
print(f.__closure__[0].cell_contents)
结果:
(<cell at 0x10ef99a38: int object at 0x10ecedfb0>,)
25
定义:函数加上环境变量 (函数定义时的变量,还不可以是全局变量)
保存在:
f.__closure__