1、闭包函数
闭包函数有三个特性:
- 函数中嵌套函数
- 外层函数返回内存嵌套的函数名
- 嵌套函数对外部作用域有一个非全局变量的引用
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))