Python 第十五天 (for循环、生成器、装饰器、程序解耦)

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处可能引发连锁反应)

这时候需要将代码拆开,相互隔离,尽量减少互相之间的依赖。