PYTHON学习0038:函数---生成器send方法---2019-7-2

函数生成器中,send的作用:
1、换新生成器继续执行
2、发送一个信息到生成器内部。
和next()的区别:
next只是唤醒生成器并继续执行,next()就相当于没有发送值或者默认发送一个None给函数内部。
send(None)和next()效果一样。
例子:
def range(n):
count=0
while count<n:
print("count",count)
count+=1
sign=yield count
print("------sign",sign)
t=range(3)
next(t)
print("i will go to do somethingeles")
t.send("stop")
输出为:
count 0
i will go to do somethingeles
------sign stop
count 1

说明t.send("stop")把括号里的“stop”传到函数里的sign了。
所以可以通过判断传给sign的值来决定要不要终止函数内的循环:
def range(n):
count=0
while count<n:
print("count",count)
count+=1
sign=yield count
if sign=="stop":
break(或者return也一样)
print("------sign",sign)
t=range(3)
next(t)
print("i will go to do somethingeles")
t.send("stop")

send

原文地址:https://blog.51cto.com/13543767/2416147

时间: 2024-11-16 15:42:54

PYTHON学习0038:函数---生成器send方法---2019-7-2的相关文章

python学习:函数内置方法

原文地址:https://www.cnblogs.com/blitz2000/p/9465429.html

day13 python学习 迭代器,生成器

1.可迭代:当我们打印 print(dir([1,2]))   在出现的结果中可以看到包含 '__iter__', 这个方法,#次协议叫做可迭代协议 包含'__iter__'方法的函数就是可迭代函数 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. 2.迭代器 iterator l = [1,2,3,4] l_iter = l.__iter__() #迭代器的生成 item = l_iter.__next__() #迭代器的使用,用此方法一一钓鱼迭代器中的数值 print

python 学习笔记 函数和类

与java类似 python的函数也是出于可以复用才使用的 如果一段代码没有复用的价值就可以不用函数 一般的函数可以定义成这样: def func(a,b=123,*arg,**args): for x in arg:#arg是一个list print x for x,y in args.items():#args是一个dict print x,y print 'a:',a print 'b:',b func(1,1,2,3,4,c=1,d=2) 结果: 2 3 4 c 1 d 2 a: 1 b

Python学习之函数篇

python查看对象,函数帮助文档:.__doc__,例:str.split.__doc__ 查看详细对象,函数文档:help(),例:help(str.split) 函数参数可设置默认值 如果不能提前确定参数个数,可以采用可变参数,因此,python不必支持函数的重载,更简单,更方便的实现重载 函数示例: 求最大公约数.最小公倍数函数封装 原文地址:https://www.cnblogs.com/baobao2201128470/p/10884153.html

PYTHON学习0036:函数---生成器调用方法---2019-6-30

可以用for和while循环来调用生成器,取里面的值.比如a=(i for i in range (10)for i in a:print(i)输出为:0123456789 while True:print(next(a)输出为:0123456789Traceback (most recent call last):File "F:/python/2019.6.2/xuexi/6.2/列表生成器.py", line 21, in <module>print(next(a))

python学习笔记之生成器和迭代器、内置函数

生成器 迭代器 内置函数 作业 一.生成器 1.1.列表生成器 问题引入:看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我要求你把列表里的每个值加1 方案一: a = [1,3,4,6,7,7,8,9,11] for index,i in enumerate(a): a[index] +=1 print(a) 原值修改 方案二: >>> a [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> a = map(lambda x:x

【Python学习】函数参数传递方法四种(位置,关键字,默认值,包裹位置,包裹关键字传递)

1. 位置传递: #--coding:utf-8-- def send(name,address): return 'package is sent to %s, located in %s' %(name, address) print(send('winnie','shanghai')) 2. 关键字传递 def run(name,length, date): return '%s ran %s on %s' %(name,length,date) #关键字传递时,可以无视参数顺序,名字对了

python学习总结(函数进阶)

-------------------程序运行原理------------------- 1.模块的内建__name__属性,主模块其值为__main__,导入模块其值为模块名 1.创建时间,py文件比pyc文件新,则从新生成pyc. 2.magic num,做运行前版本测试,版本不同重新生成pyc. 3.PyCodeObject对象,源代码中的字符串,常量值,字节码指令,原始代码行号的对应关系. 2.LEGB规则 1.Local :本地 当前所在命名空间(如函数,模块),函数的参数也属于命名空

Python学习-迭代器和生成器

1 '''.在Python中,这种一边循环一边计算的机制,称为生成器:generator. 2 要创建一个generator,有很多种方法. 3 可以通过next()函数获得generator的下一个返回值''' 4 5 def fib(max): 6 n, a, b = 0, 0, 1 7 while n < max: 8 #print(b) 9 yield b 10 a, b = b, a + b 11 n = n + 1 12 return 'done' 13 14 15 #_*_codi