博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pyhton入门 笔记 第四天 Python的高级语法与用法
阅读量:5081 次
发布时间:2019-06-12

本文共 1856 字,大约阅读时间需要 6 分钟。

一,枚举

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))

转载于:https://www.cnblogs.com/tngh/p/9318688.html

你可能感兴趣的文章
python的列表与shell的数组
查看>>
关于TFS2010使用常见问题
查看>>
软件工程团队作业3
查看>>
python标准库——queue模块 的queue类(单向队列)
查看>>
火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题...
查看>>
深入理解JVM读书笔记--字节码执行引擎
查看>>
vue-搜索功能-实时监听搜索框的输入,N毫秒请求一次数据
查看>>
批处理 windows 服务的安装与卸载
查看>>
React文档翻译 (快速入门)
查看>>
nodejs fs路径
查看>>
动态规划算法之最大子段和
查看>>
linux c:关联变量的双for循环
查看>>
深入浅出理解zend framework(三)
查看>>
python语句----->if语句,while语句,for循环
查看>>
javascript之数组操作
查看>>
LinkedList源码分析
查看>>
TF-IDF原理
查看>>
用JS制作博客页面背景随滚动渐变的效果
查看>>
JavaScript的迭代函数与迭代函数的实现
查看>>
一步步教你学会browserify
查看>>