Pyhton入门 笔记 第四天 Python的高级语法…

2018-07-17 04:06:07来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一,枚举

from enum import Enum     #引入枚举模块

class VIP(Enum):      #python中枚举既是类,而且要继承父类Enum

    YELLOW=1

    GREEN=2

    BLACK=3

    RED=4

print(VIP.YELLOW)     #得到的是枚举

print(VIP.YELLOW.value)

print(VIP.YELLOW.name)   #得到的是str

结果:VIP.YELLOW #枚举类型    1 #枚举值    YELLOW#枚举的名字

 

二,枚举的重命名

from enum import Enum     

class VIP(Enum):      

    YELLOW=1

    YELLOW_ALIAS=2   #在枚举中,如果两个数值是相同的话,可以称为另一个的别名。

    BLACK=3

    RED=4

for v in VIP:

    print(v)        #此时当打印的时候,是不会打印出别名来的。

如果想要打印出别名的话

for v in VIP.__member__.items():

    print(v)     #此时可打印出枚举的所有相关项

如果上面的输出太多,也可以

for v in VIP.__member__:

    print(v)

 

 

 

三,枚举类型转化

from enum import Enum     

class VIP(Enum):      

    YELLOW=1

    GREEN=2   

    BLACK=3

    RED=4

a=1                  #当我们得到一个值时怎么能得枚举类型。

print(VIP(a))      #直接把值放到枚举类中

结果为:VIP.YELLOW

 

四 枚举的继承

当在引入时不至有

from enum import Enum     

还可以引入

from enum import IntEnum     #当枚举类继承此(IntEnum)时,枚举类的值只能是数字类型

class VIP(IntEnum):      

    YELLOW=1

    GREEN=2   

    BLACK=3

    RED=4     

注,当值有字符类型时会报错,但如果继承(Enum)时,则都可以.

 五,限定枚举值不能相同

from enum import IntEnum,unique

@unique  #装饰器    #限定枚举值不可以相同,会报错

class VIP(IntEnum):      

    YELLOW=1

    GREEN=2   

    BLACK=3

    RED=4    

 

六  #闭包=函数+环境变量

def curve_pre():

    a=25    #环境变量

    def curve(x)

        return a*x*x

    return curve        #函数curve_pre的返回值,为curve函数而不是curve函数的值

a=10

f=curve_pre()    #调用函数cruve()之前应先调用函数curve_pre(),因为函数curve_pre的返回值为函数curve(),所以此时f=curve(x)

f(2)   #此时等于curve(2)  但此时函数curve()中的a=25,而不是10

print(f(2))

print(f.__closure__)    #环境变量被放置的地方

print(f.__closure__[0.]cell_contents)  #打印出环境变量的值

  

七,问题解决   需求,走路,计算步数

 origin=0    #初始化原点

def go(step)    #step步数

    global origin    #定义origin为全局变量

    new_pos=origin+step

    origin=new_pos   #此处如果对origin重新赋值时没有定义为全局变量,则会被认为是局部变量,而局部变量不是向上找origin=0,所以会被认为没有被定义

    return new_pos

print(go(2))

print(go(6))

print(go(10))

 

八,闭包解决问题同上

origin=0

def factory(pos)  #步数

    def go(step)  #行走步数

        nonlocal pos   #指定pos为非局部变量

        new_pos=pos+step

        pos=new_pos

        return new_pos

    return go                            #闭包特征返回函数go()    环境变量(记录上次的环境特殊)pos

tourist=factory(origin)

print(tourist(2))

print(tourist(5))

print(tourist(8))

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python介绍

下一篇:win10 python 3.6.5-amd64 安装 paramiko 模块 不到之处请