python生成式的send()

随便在网上找了找,感觉都是讲半天讲不清楚,这里写一下。

def generator():
    while True:
        receive=yield 1
        print(‘extra‘+str(receive))

g=generator()
print(next(g))
print(g.send(111))
print(next(g))

输出:

1
extra111
1
extraNone
1

为什么会这样呢,点进send就能看到一句话
send:Resumes the generator and "sends" a value that becomes the result of the current yield-expression.
就是说 这里yield 1整体被视为一个表达式,你send的内容会作为这个表达式的值,随便你左边用什么东西接收或者不接收,总之yield就是你send进来的那个东西。这个表达式变成你send进来后的东西后继续执行,再次遇到yield,输出yield后面跟着的表达式。
当然通常使用的话都不会输出一个常量,会输出一个和接收到的东西相关的量,不然岂不是白白发送了。

时间: 2024-08-06 19:53:55

python生成式的send()的相关文章

python生成式生成器详细解答

Python得yield关键字,yield是python中的生成器了解生成器需要先了解什么是生成式,切片的目的是从已有的列表中切出一部分返回,而生成式的目的则是从无到有的构建一个列表一个生成式的案例假如构建一个含有10个元素的列表,可以怎么做?这里可以使用python的一个内置函数range来生产一些数字,然后利用循环填充到一个列表中 list = [] for i in range(1,11):     list.append(i)     print(list) 那么使用生成式应该怎么实现呢

(三)3-5 Python生成式和生成器

生成式和生成器 列表生成式是Python最受欢迎的语法之一,通过间接的语法可以对一组元素进行过滤,还可以对元素处理,格式为[exp for val in collection if condition]相当于: result = [] for val in collection: if (collection): result.append(exp) 例如: a = [x * x for x in xrange(10) if x*x%2 ==0] print(type(a)) print(a)

17. Python 生成式   生成器   迭代器

1.      生成式和生成器 列表生成式是python受欢迎的一种语法之一,通过一句简洁的语法,就能对元组元素进行过滤,还可以对得到的元素进行转换处理. 语法格式: [exp for val in collection if condition] 相当于 result = [] for val in collection: if (condition): result.append(exp) 例子: a = [x*x for x in xrange(10) if x%2 == 0] print

Python生成器及send用法讲解

- 生成器 我们调用一个普通的Python函数时,一般是从函数的第一行代码开始执行,结束于return语句.异常或者函数结束(可以看作隐式的返回None).一旦函数将控制权交还给调用者,就意味着全部结束.函数中做的所有工作以及保存在局部变量中的数据都将丢失.再次调用这个函数时,一切都将从头创建. 对于在计算机编程中所讨论的函数,这是很标准的流程.这样的函数只能返回一个值,不过,有时可以创建能产生一个序列的函数还是有帮助的.要做到这一点,这种函数需要能够"保存自己的工作". 我说过,能够

python generator next send

*******oi********oi********oi 上面  *  符号 代表 一系列的代码, oi 代表 一个 [yield]关键字引出的 [数据交换,称之为 oi ] 在一个有[yield]的 function 里: 在出现[yield]的地方有一个[oi]的过程,为什么不是[io]呢,因为它就是先[o]再[i]的. [o]代表从 generator 里出来一个 value. [i]代表 generator 从外界收到一个 value. 一般,在外界可以使用 next 或者 send.

Python 3.4 send mail

#coding=utf-8 #Python 3.4 https://docs.python.org/3.4/library/ #IDE:Visual Studio 2015 Window10 import atexit import os import unicodedata import sys import time import unicodedata import winsound import code import codecs import math import csv impo

python生成式和生成器

一,生成式和生成器 1,列表生成式 mylist = [ i*i for i in range(3) if i>1 ] print(mylist) 运行结果:[4] 可以发现,快速生成列表的表达式,for循环range(3) ,如果i大于1,则乘以自己然后输出. 2,生成器 mygenerator = ( i*i for i in range(3)) print(mygenerator) 运行结果:<generator object <genexpr> at 0x000001FB0

python\列表和生成器表达式

一.协程函数的应用 写一个装饰器用于让协程函数不需要输入再执行一次next()函数 分析: 在装饰器中生成该协程函数的生成器, 并且执行一次next()函数 def firstNext(func): def wrapper(*args, **kwargs): g = func(*args, **kwargs) next(g) return g return wrapper @firstNext def eater(name): print("{} start to eat".forma

python学习之高级特性

一.生成式1.定义 生成式就是一个用来快速生成特定语法形式的表达式.列表生成式:用来快速生成列表字典生成式:用来快速生成字典集合生成式:用来快速生成集合2.语法格式 (1)普通的语法格式:[exp for iter_var in iterable](2)带过滤功能语法格式: [exp for iter_var in iterable if_exp](3)循环嵌套语法格式: [exp for iter_var_A in iterable_A for iter_var_B in iterable_B