首页 > 代码库 > aaaa

aaaa

回顾yield

yield
1.用在函数里,把函数的执行结果做成一个生成器,注意:是执行结果
2.与return功能类似,都可以返回值;return只能返回一次值,然后结束函数;yield可以返回多个值
3.yield会暂停函数,保存函数状态
技术分享
def func(count): print(‘start‘) while True: yield count count +=1 func(10)g=func(10)print(g) #<generator object func at 0x000002341F69FDB0> 注意注意!!把函数的执行结果做成生成器generator,执行结果next(g)#start next会触发生成器的执行print(next(g)) #11 g.__iter__() #只有iter属性的是迭代对象g.__next__()#iter和next都有的是迭代器,触发迭代器执行的是next,生成器本质上是迭代器
举例

协程函数讲解

本质上是 yield的表达式的应用
yield的表达式应用:
两个阶段:
1.初始化
next(g)
g.send(None)
2.传值
g.send(‘apple‘)
#一个什么都不做的装饰器模板
技术分享
def init(func): def wrapper(*args,**kwargs): pass return wrapper 
View Code
技术分享
#自动初始化的装饰器def init(func): def warpper(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return warpper@initdef eater(name): print(‘%s start eat‘ %name) food_list=[] while True: food=yield food_list food_list.append(food) print(‘%s start eat %s‘ %(name,food)) g=eater(‘alex‘)print(g)#初始化#next(g)#传值print(g.send(‘apple‘))print(g.send(‘banana‘))
举例

 面向过程

核心是过程

介绍

核心是过程,过程即解决问题的步骤。基于面向过程的程序,就像是在设计一条工业流水线,是机械式的思维

优点:

缺点:

应用场景:

举例

利用python实现以下命令的作用

grep  -rl ‘error‘ /dir/  过滤出dir目录下所有带有‘error’的文件名字

先分析实现的过程(面向过程)

1.找出dir目录下所有的文件的绝对路径

2.打开文件

3. 每打开一个文件,循环过滤每一行

4.过滤‘error’关键字

5.打印带有‘error’行所属于的文件的绝对路径

 

aaaa