1、 for循环机制
for循环是将循环对象进行全部调用,并可以换识别stopiteration,在进行迭代后自动停止
2、生成器
生成器的两种形式
1、生成器函数:包含yield语句的函数就是生成器
2、生成器表达式:进行列表推导,可以产生生成器结果
使用列表包含三元表达式的方式实现生成器
优点:
节约内存:一次调用1个数据
3、装饰器
装饰器本质是函数,为其他函数添加附加功能
原则:
1、不修改被装饰函数的代码
2、不修改被装饰函数的调用方式
装饰器本质:
高阶函数 + 函数嵌套 + 闭包
高级函数:
import timedef foo ():time.sleep(2)print('计算时间')def timmer(func):start_time=time.time()func ()Stop_time= time.time()print('函数运行时间%s'%(Stop_time-start_time))return func
foo = timmer(foo)
foo()
闭包:
def outer(num):# 外层局部变量x = num# 内层函数(闭包函数)def inner():# 内层使用外层变量xprint(f"外层传入数字:{x}")return x * 2# 返回内层函数对象,不调用return inner# 调用外层,接收内层函数 f1 = outer(10) f2 = outer(20)# 执行内层函数 print(f1()) # 20 print(f2()) # 40# 可以查看闭包保存的变量 print(f1.__closure__) print(f1.__code__.co_freevars)
4、程序解耦
程序编写过程中,因为解决的问题连续,有可能程序整个存在高度耦合情况(代码之间高度绑定,修改1处可能引发连锁反应)
这时候需要将代码拆开,相互隔离,尽量减少互相之间的依赖。
