python-闭包函数、装饰器、迭代器、生成器

1、闭包函数

闭包函数有三个特性:

  1. 函数中嵌套函数
  2. 外层函数返回内存嵌套的函数名
  3. 嵌套函数对外部作用域有一个非全局变量的引用
def func():
    a = 100

    def func2():
        print(a)

    return func2

 

2、装饰器

语法:@装饰器
装饰器的作用:在不更改原功能函数代码和调用方式的基础上给函数扩展新的功能。

开放封闭原则:

  • 开放:对功能的扩展时开放的
  • 封闭:对已经实现的功能的修改是封闭的
def func(fu):
    """
    :param fu: 被装饰的函数
    :return:
    """
    def wrapper():
        print("装饰扩展的新功能1")
        print("装饰扩展的新功能2")
        # 调用原功能函数
        fu()
        print("装饰扩展的新功能3")

    return wrapper



@func    #    ----> print_info = func(print_info)
def print_info():
    print("---原功能函数打印的个人信息---")


print_info()


结果:

3、迭代器和生成器

可迭代对象:python中可以使用for去进行遍历的都叫可迭代对象
  - 字符串、列表、元组、字典、range

迭代器:可迭代对象的一种,可以用内置函数next迭代取值

生成器:它是一种特殊的迭代器,同过yield可以定义生成器函数

li = [11,22,33,44]

# 使用内置函数iter讲迭代对象转换为迭代器
ite = iter(li)

res = next(ite)
print(res)
print(next(ite))
print(next(ite))
print(next(ite))
print(next(ite))  # -------超出迭代范围

def gen():
    "生成器函数"
    for i in range(100):
        yield i
        print("函数调用打印",i)

g = gen()


print(next(g))
print(next(g))
print(next(g))

 

 

 

 

原文地址:https://www.cnblogs.com/erchun/p/13508418.html