Python生成器(二)

今日知识函数复习,生成器函数复习,协程入门,协程VS多线程,协程版生产者消费者模型函数的复习函数的定义与调用在不执行代码的情况下需要明确代码是如何一步一步执行的def func(): print(1) return 2 print(2)res = func()print(res)生成器函数复习把return换为yield函数就会变为一个生...
摘要由CSDN通过智能技术生成

今日知识

函数复习,生成器函数复习,协程入门,协程VS多线程,协程版生产者消费者模型

函数的复习

函数的定义与调用

在不执行代码的情况下

需要明确代码是如何一步一步执行的

def func():
    print(1)
    return 2
    print(2)


res = func()
print(res)

生成器函数复习

把return换为yield

函数就会变为一个生成器

只要函数中有了yield,那么这个函数就是生成器函数

对象的创建 = 类名()

生成器的创建 = 生成器函数名()

希望让生成器对象执行起来

生成器对象.__next__()

生成器对象运行起来后

它会执行函数内部的代码

直到遇见yield就会停住

返回yield后面的数据

并且指针状态会停留在yield这一行的行未

当第二次执行

生成器对象.__next__()

从上一次停留的地方继续往下走

情况1,直到遇见yield就会停住,返回yield后面的数据

情况2,没有遇到yield,函数结束,它会按照迭代器协议报错。得不到数据,经协过的代码仍会被执行.

测试代码

def func():
    print(1)
    yield 2
    print(22)


res = func()
print(res)
n = res.__next__()
print(n)

n = res.__next__()
print(n)


# for i in res:
#     print(i)

另一种方式让生成器函数跑起来

方式一

生成器对象.__next__()

方式二

next(生成器对象)


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值