博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python之next和send用法详解
阅读量:6822 次
发布时间:2019-06-26

本文共 755 字,大约阅读时间需要 2 分钟。

如果send不携带参数,那么send(None) 和next()的作用的相同的,如:

def a():    print('aaa')    p = yield '123'   #print(p)    print('bbb')r = a()print(next(r))#print(r.send(None))#使用next(r) 和 r.send(None)输出的结果都是 #注意的是,这里的p变量的值都是None aaa123

如果send的参数不是None,则是把yield xx当成一个表代式,且把send的参数的值赋给了p;而后的操作同next一样,如:

def a():    print('aaa')    p1 = yield '123'    print('bbb')    if (p1 == 'hello'):        print('p1是send传过来的')    p2= yield '234'    print(p2)r = a()next(r)r.send('hello')#结果为aaabbbp1是send传过来的

说一下执行的顺序,首先a()是个生成器;第一次执行要么next(r)要么r.send(None),不能使用r.send('xxxxx');这会报错的。第一次执行时next(r)时,首先打印出aaa,

然后遇到yield即跳出,然后执行r.send('hello')时,p1则被赋值为hello了,然后继续接着上次运行,下一步打印出bbb,然后打印出'p1是send传过来的',当再次遇到第二个yield时跳出,所以结果只打印了三行,后面的p2没有执行。

转载于:https://www.cnblogs.com/barefoot/p/9706803.html

你可能感兴趣的文章
转:Socket原理与编程基础
查看>>
linux C 刚初始化后的一个变量在调用一个静态库中函数后被异常修改为乱码
查看>>
记录DHT网络主要功能步骤
查看>>
VS2010使用Qt库
查看>>
Python特殊语法--filter、map、reduce、lambda
查看>>
X-UA-Compatible设置兼容模式
查看>>
由买冰箱想到的
查看>>
Delete和Truncate的区别
查看>>
android WebView总结
查看>>
适配器模式
查看>>
【综述】(MIT博士)林达华老师-"概率模型与计算机视觉”
查看>>
solr 3.5.0 与 tomcat 7.0.5 整合配置
查看>>
/var/lock/subsys作用
查看>>
mvc项目架构搭建之UI层的搭建
查看>>
Android RxJava
查看>>
【linux】su和sudo命令的区别
查看>>
Servlet基础
查看>>
Lind.DDD.Repositories.Mongo层介绍
查看>>
纸板上的虚拟现实和代码中的Cardboard
查看>>
[原] Jenkins Android 自动打包配置(转)
查看>>