Python学习-高级语法学习

枚举的使用:

   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__

发布了37 篇原创文章 · 获赞 4 · 访问量 6842

猜你喜欢

转载自blog.csdn.net/m0_37918421/article/details/86512661