PythonStudy——生成器send方法

# send的工作原理
# 1.send发生信息给当前停止的yield
# 2.再去调用__next__()方法,生成器接着往下指向,返回下一个yield值并停止

# 案例:

persons = [‘张三‘, ‘李四‘, ‘王五‘, ‘赵六‘, ‘钱七‘]

def order(persons):
  for i in range(len(persons)):
    if i == 0:
      print(‘%s在面试‘ % persons[0])
    else:
      print(‘%s叫%s在面试‘ % (name, persons[i]))
      print(‘%s面试完毕‘ % persons[i])
      name = yield persons[i]

obj = order(persons)
for i in range(len(persons)):
  if i == 0:
    p = obj.__next__()
  else:
    p = obj.send(p)
  print(‘=============================‘)

原文地址:https://www.cnblogs.com/tingguoguoyo/p/10803713.html

时间: 2024-10-30 09:42:17

PythonStudy——生成器send方法的相关文章

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

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

生成器的扩展 ------ send() 方法

生成器的 send() 方法g.send ('A') 1 send 和 next 的工作的起止位置是完全相同的 2 send 可以把一个值作为 信号量 传递到函数中去 3 并且 在生成器开始 只能先使用next 4 send('a')改变上一次yield的内容 可以用yield 返回同一个改变的值来返回 # def fun(): # print(1) # yield 2 #888 # print(3) # value=yield 4 #value---None # print(6) # yiel

【Python学习之十】yield之send方法

yield作用 简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator.下面以斐波拉契数列来做个说明: # 普通的函数实现 def fib(max): n, a, b = 0, 0, 1 while n < max: print(b) a, b = b, a + b n = n + 1 return 'done' """不足: 在 fab 函数中用 pri

利用 send 方法计算多个数的平均数

利用 send 方法计算多个数的平均数,并且可以多次输入: def averager(): # 创建一个生成器函数 sum = 0 # 创建一个总数变量 count = 0 # 创建一个个数变量 avg = 0 # 创建一个平均数变量 while True: # while 循环 num = yield avg # 先执行 next,然后再执行 send,yield avg 接受 send 返给函数的值,传给 num. sum = sum + num # 第一次 sum = 0 + 10 (nu

生成器send的用法案例

生成器函数send方法案例:每输入一个值,求移动平均值,如下:10 20 30 40 50...10 15 20 25 30... def avg_creater(): num = 0 count = 0 avg = 0 while True: num1 = yield avg num += num1 count += 1 avg = num/count g = avg_creater() g.__next__() avg = g.send(10) avg = g.send(20) avg =

Ajax中send方法参数的使用

一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null. 例如 : var url = "login.jsp?user=XXX&pwd=XXX"; xmlHttpRequest.open("GET",url,true); xmlHttpRequset.send(null); 此外,也可以使用send方法传递参数.使用send方法传递参数使用的是POST方法,需

nodejs 中Express 的 send方法

如果send()发送的是一个json,比如 {name:'David',age:18,gender:undefined} 那么客户端只能接收到 {name:'Daivd',age:18} 这样的数据. send方法直接把undefined数据过滤掉了! 具体原因等有空再去查.

Ajax XMLHttpRequest对象的三个属性以及open和send方法

(1)onreadystatechange 属性onreadystatechange 属性存有处理服务器响应的函数.下面的代码定义一个空的函数,可同时对 onreadystatechange 属性进行设置: xmlHttp.onreadystatechange=function(){// 我们需要在这里写一些代码}(2)readyState 属性readyState 属性存有服务器响应的状态信息.每当 readyState 改变时,onreadystatechange 函数就会被执行. 这是 r

【转】Ajax中send方法参数的使用(get/post)

Ajax中send方法参数的使用 一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null. 例如 : var url = "login.jsp?user=XXX&pwd=XXX"; xmlHttpRequest.open("GET",url,true); xmlHttpRequset.send(null); 此外,也可以使用send方法传递参数.使用send方