Python(九) Python的高级语法与用法

本章节我们揭开Python进阶部分的高级特性,详细讲解枚举、闭包,并对函数式编程做出介绍

一、 枚举其实是一个类
from enum import Enum

#枚举类
class VIP(Enum):
    YELLOW = 1 #大写
    GREEN = 2
    BLACK = 3
    RED = 4 

print(VIP.YELLOW) # VIP.YELLOW
二、枚举和普通类相比有什么优势
 
1.不可变
2.去相同值

三、枚举类型、枚举名称与枚举值
from enum import Enum

#枚举类
class VIP(Enum):
    YELLOW = 1
    GREEN = 2
    BLACK = 3
    RED = 4 

# 枚举类型、枚举名字、枚举值
print(VIP.GREEN.value) # 2  枚举值
print(VIP.GREEN) # VIP.GREEN   枚举类型
print(VIP.GREEN.name) # GREEN  枚举名称

print(VIP['GREEN']) # VIP.GREEN 
print(type(VIP['GREEN'])) # <enum 'VIP'>

print(type(VIP.GREEN)) # <enum 'VIP'>
print(type(VIP.GREEN.name)) # <class 'str'>

# 遍历

for v in VIP:
    print(v)

# VIP.YELLOW
# VIP.GREEN
# VIP.BLACK
# VIP.RED

四、枚举的比较运算
 
from enum import Enum

#枚举类
class VIP(Enum):
    YELLOW = 1
    GREEN = 2
    BLACK = 3
    RED = 4 

# 枚举比较
r = VIP.GREEN == VIP.GREEN
print(r) # True

r = VIP.GREEN is VIP.GREEN
print(r) # True

# 枚举不可以做大小比较 不可以不同的枚举进行比较
五、枚举注意事项
 
枚举不可以相同的标签
 
值一样的话 枚举会把后面的当作前面的一个别名
from enum import Enum

#枚举类
class VIP(Enum):
    YELLOW = 1
    GREEN = 1
    BLACK = 3
    RED = 4 

print(VIP.GREEN) # VIP.YELLOW


for v in VIP:
    print(v)

# VIP.YELLOW
# VIP.BLACK
# VIP.RED

for v in VIP.__members__:
    print(v)

# YELLOW
# GREEN
# BLACK
# RED

for v in VIP.__members__.items():
    print(v)

# ('YELLOW', <VIP.YELLOW: 1>)
# ('GREEN', <VIP.YELLOW: 1>)
# ('BLACK', <VIP.BLACK: 3>)
# ('RED', <VIP.RED: 4>)

六、枚举转换
 
from enum import Enum

#枚举类
class VIP(Enum):
    YELLOW = 1
    GREEN = 1
    BLACK = 3
    RED = 4 

a = 1
print(VIP(a)) # VIP.YELLOW

七、枚举小结
 
from enum import Enum
from enum import IntEnum,unique

#枚举类

@unique   # 装饰器 不允许值相同 IntEnum 枚举值仅仅为int
class VIP(IntEnum):
    YELLOW = 1
    GREEN = 2
    BLACK = 3
    RED = 4 
# 23种设计模式 单例模式

八、进阶内容开场白

九、一切皆对象

十、什么是闭包

十一、一个事例看看闭包

十二、闭包的经典误区

十三、出个题,用闭包解决!

十四、我先用非闭包解决一下

十五、再用闭包解决一下_

十六、小谈函数式编程

 

猜你喜欢

转载自www.cnblogs.com/zhangtaotqy/p/9498841.html