Python从零开始——Class18:一闭三器

知识点:

  1. 闭包
    1. 闭包介绍
    2. 闭包的必要条件
  2. 装饰器
  3. 迭代器
  4. 生成器

知识点说明:

1.闭包:

①闭包的作用:保证数据安全。

全局变量可以随意修改;函数内的变量无法随意修改,同样无法随意使用;使用闭包,可以保证数据无法被随意修改的同时,又让数据可以被使用。

②闭包的必要条件:

(1)闭包是一个嵌套函数

(2)外部函数返回内部函数名(非函数)

(3)内部函数使用外部函数的变量(非必要条件)

# 嵌套函数
def ext():
    # 外部函数的变量为自由变量
    ext_name = "外部"
    def inter():
        print("内部")
        # 返回自由变量
        return ext_name
    # 返回内部函数名(非函数)
    return inter

# res等同于返回的内部变量名inter
res = ext()
# 打印内部函数的返回值
print(res())

2.装饰器:

装饰器是在不改变函数功能的基础上,增加一些功能,其本质是一个闭包。定义一个装饰器后,通过@装饰器函数名,调用装饰器。

# 装饰器:可以将函数以参数形式传入
def zhuangshi(func):
    # 内部函数带不定长参数,适用于不同函数调用
    def inter(*args):
        print("功能开启")
        res = func(*args)
        print("功能关闭")
        # 内部函数返回调用参数的函数
        return res
    return inter

# @装饰器函数名
@ zhuangshi
# 定义调用装饰器的运行函数
def yunxing()
    pass

res = yunxing()
print(res)

3.迭代器:Iterator

迭代器是可迭代的对象,可以实现迭代器协议,其包含的值可遍历。包含方法 iter() 和 next()。

# 获取迭代器的方法:iter()
list = [0,1,2,3,4,5]

# 获取列表list的迭代器
it_list = iter(list)
it_list = list.__iter__()
print(it_list)


# 从迭代器中获取数据:next()
print(next(it_list))
print(it_list.__next__())

4.生成器:生成器的本质是迭代器

生成器函数中必须具备关键字yield;

执行生成器函数时,不会直接执行,二是得到生成器;

生成器可以返回数据,通过next()方法,以yield为节点进行分段执行;执行到yield后,生成器会暂停执行,等待下一次指令。

# 创建生成器
def shengcheng():
    # yield可以返回数据
    print("大家好")
    yield "这是第一个节点"
    print("大家好")
    yield "这是第二个节点"

print(shengcheng().__next__())
print(shengcheng().__next__())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值