[译]PEP 380--子生成器的语法】的更多相关文章

导语: PEP(Python增强提案)几乎是 Python 社区中最重要的文档,它们提供了公告信息.指导流程.新功能的设计及使用说明等内容.对于学习者来说,PEP 是非常值得一读的第一手材料,学习中遇到的大部分难题,都能在 PEP 中找到答案或者解决思路. 我翻译了几篇 PEP,这么做的目的一方面是为了加强学习,另一方面也是为了锻炼自己的英文水平.Python 与 English,都是如此重要.翻译能将两者巧妙地结合起来,真是一举两得. 本文介绍了子生成器的语法,即 yield from 语法.…
PEP原文 : https://www.python.org/dev/peps/pep-0342/ PEP标题: Coroutines via Enhanced Generators PEP作者: Guido van Rossum, Phillip J. Eby 创建日期: 2005-05-10 合入版本: 2.5 译者 :豌豆花下猫(Python猫 公众号作者) 目录 简介 动机 规格摘要 规格:将值发送到生成器 新的生成器方法:send(value) 新的语法:yield 表达式 规格:异常…
 PEP 380 – 委托子生成器语法 翻译自: https://www.python.org/dev/peps/pep-0380/ 摘要 一项新的语法被提出了:生成器委托其部分操作给另一个生成器.委托也就意味着包含’yield’的那部分代码可能被分解,并且放置在另一个生成器里.此外,子生成器可以返回一个值,而且这个值对于委托生成器可用(即上层的生成器). 同时,当一个生成器重复多次的yield另一个生成器产生的值时,可以通过这项新的语法进行优化. PEP授理  Guido 正式接受这项 PEP…
我正打算写写 Python 的生成器,然而查资料时发现,引入生成器的 PEP 没人翻译过,因此就花了点时间翻译出来.如果在阅读时,你有读不懂的地方,不用怀疑,极有可能是我译得不到位.若出现这种情况,我建议你直接阅读原文,最好也能将错误处告知于我,以便做出修改. 原文:https://www.python.org/dev/peps/pep-0255 创建日期:2001-05-18 合入Python版本:2.2 译者 :豌豆花下猫(Python猫 公众号作者) PEP背景知识 :学习Python,怎…
一.SQL子查询语句 1.单行子查询        select ename,deptno,sal        from emp        where deptno=(select deptno from dept where loc='NEW YORK'):      2.多行子查询        SELECT ename,job,sal        FROM EMP        WHERE deptno in ( SELECT deptno FROM dept WHERE dnam…
生成器 调用生成器函数,不会执行生成器函数中的代码,而是返回一个对象,  这个对象是生成器(可用type()函数判断这个对象类型),  如果要运行生成器函数中的代码, 需要调用 next()方法,  next()方法会在遇到 yield 语句的地方停止运行. 不停地调用生成器对象的 next()方法,即可获得一个序列. 一般不需要直接调用 next()方法,而是使用 for 语句: def countdown(n): print 'counting down from %d'%n while n…
Lighthouse3d.com >> GLUT Tutorial >> Pop-up Menus >> Sub Menus 上一节我们介绍了如何创建普通菜单和如果绑定用户选定的菜单到处理事件.下面来介绍分层子菜单. 子菜单的创建和菜单用的是同一个函数.创建后插入到菜单的函数glutAddSubMenu原型如下: void glutAddSubMenu(char *entryName, int menuIndex); entryName - 子菜单名 menuIndex…
任何使用yield语句的函数都称为生成器.调用生成器函数将创建一个对象,该对象通过连续调用next()方法(在python3中是__next__())生成结果序列. next()调用使生成器函数一直运行到下一条yield语句为止.此时next()将返回值传递给yield,而且函数将暂时中止执行.再次调用next()时,函数将继续执行yield之后的语句.此过程持续到函数返回为止. 通常不会在生成器上直接调用next()方法,而是在for语句.sum()或一些使用序列的其他操作中使用它. 生成器函…
原文:Async IO in Python: A Complete Walkthrough 原文作者: Brad Solomon 原文发布时间:2019年1月16日 翻译:Tacey Wong 翻译时间:2019年7月22日 翻译仅便于个人学习,熟悉英语的请阅读原文 目录 搭建自己的实验环境 异步IO鸟瞰图 哪些场景适合异步IO? 异步IO释义 异步IO使用起来不容易 asyncio 包和 async/await async/await 语法和原生协程 异步IO规则 异步IO设计模式 链式协程…
[译] PEP 525--异步生成器 PEP原文:https://github.com/python/peps/blob/master/pep-0525.txt 创建日期:2016-07-18 译者 :CXA(python学习开发 公众号作者) 简述 PEP492引入了对Python 3.5的原生协程和async/await句法的支持.本次提案添加了对异步生成器的支持进而来扩展Python的异步功能. 理论和目标 常规生成器(在PEP 255中引入)的实现,使得编写复杂数据变得更优雅,它们的行为…
前年我曾写过一篇<初探 Python 3 的异步 IO 编程>,当时只是初步接触了一下 yield from 语法和 asyncio 标准库.前些日子我在 V2EX 看到一篇<为什么只有基于生成器的协程可以真正的暂停执行并强制性返回给事件循环?>,激起了我再探 Python 3 异步编程的兴趣.然而看了很多文章和,才发现极少提到 async 和 await 实际意义的,绝大部分仅止步于对 asyncio 库的使用,真正有所帮助的只有<How the heck does asy…
原文标题:PEP 0492 -- Coroutines with async and await syntax 原文链接:https://www.python.org/dev/peps/pep-0492/ 生效于:Python 3.5 翻译参照版本:05-May-2015 翻译最后修改:2015年8月22日 翻译出处:http://www.cnblogs.com/animalize/p/4738941.html 用几句话说明这个PEP: 把协程的概念从生成器独立出来,并为之添加了新语句(asyn…
Python高级语法中,由一个yield关键词生成的generator生成器,是精髓中的精髓.它虽然比装饰器.魔法方法更难懂,但是它强大到我们难以想象的地步:小到简单的for loop循环,大到代替多线程做服务器的高并发处理,都可以基于yield来实现. 理解yield:代替return的yield 简单来说,yield是代替return的另一种方案: return就像人只有一辈子,一个函数一旦return,它的生命就结束了 yield就像有"第二人生"."第三人生"…
转自:http://blog.rainy.im/2016/03/10/how-the-heck-does-async-await-work-in-python-3-5/ [译] Python 3.5 协程究竟是个啥 Yushneng · Mar 10th, 2016 原文链接 : How the heck does async/await work in Python 3.5? 原文作者 : Brett Cannon 译文出自 : 掘金翻译计划 译者 : @Yushneng 校对者: @L9m,…
python yield from 语法 yield语法比较简单, 教程也很多 , yield from的中文讲解很少 , python官网是这样解释的 PEP 380 adds the yield from expression, allowing a generator to delegate part of its operations to another generator. This allows a section of code containing yield to be fa…
PEP是什么? PEP的全称是Python Enhancement Proposals,其中Enhancement是增强改进的意思,Proposals则可译为提案或建议书,所以合起来,比较常见的翻译是Python增强提案或Python改进建议书. 我个人倾向于前一个翻译,因为它更贴切.Python核心开发者主要通过邮件列表讨论问题.提议.计划等,PEP通常是汇总了多方信息,经过了部分核心开发者review和认可,最终形成的正式文档,起到了对外公示的作用,所以我认为翻译成“提案”更恰当. PEP的…
或许你是一个初入门 Python 的小白,完全不知道 PEP 是什么.又或许你是个学会了 Python 的熟手,见过几个 PEP,却不知道这玩意背后是什么.那正好,本文将系统性地介绍一下 PEP,与大家一起加深对 PEP 的了 目前,国内各类教程不可胜数,虽然或多或少会提及 PEP,但笼统者多.局限于某个 PEP 者多,能够详细而全面地介绍 PEP 的文章并不多. 本文的目的是:尽量全面地介绍 PEP 是什么,告诉大家为什么要去阅读 PEP,以及列举了一些我认为是必读的 PEP,最后,则是搜罗了…
因为工作中慢慢开始用python的协程,所以想更好的理解一下实现方式,故翻译此文 原文中把词汇表放到最后,但是我个人觉得放在最开始比较好,这样可以增加当你看原文时的理解程度 词汇表 原生协程函数 Native coroutine function: 由async def定义的协程函数,可以使用await和return value语句 原生协程 Native coroutine: 原生协程函数返回的对象.见“await表达式”一节. 基于生成器的协程函数 Generator-based corou…
可迭代的:内部含有__iter__方法的数据类型叫可迭代的,也叫迭代对象实现了迭代协议的对象 运用dir()方法来测试一个数据类型是不是可迭代的的. 迭代器协议是指:对象需要提供next方法,它要么返回迭代中的下一项,如果要么就引起一个StopIteration异常(当对象没有下一项时),以终止迭代.我们知道for循环可以遍历列表,元组,字符串等等,还可以遍历文档,这是为什么么呢?迭代器协议是指:对象需要提供next方法,它要么返回迭代中的下一项,要么就引起一个StopIteration异常,以…
大家好,并发编程 进入第八篇. 直到上一篇,我们终于迎来了Python并发编程中,最高级.最重要.当然也是最难的知识点--协程. 当你看到这一篇的时候,请确保你对生成器的知识,有一定的了解.当然不了解,也没有关系,你只要花个几分钟的时间,来看下我上一篇文章,就能够让你认识生成器,入门协程了. 再次提醒:本系列所有的代码均在Python3下编写,也建议大家尽快投入到Python3的怀抱中来. 本文目录 为什么要使用协程 yield from的用法详解 为什么要使用yield from . 为什么要…
先看一个栗子: # -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/12/6 21:08' # 生成器函数,函数里只要有yield关键字 def gen_func(): yield 1 def func(): return 1 if __name__ == "__main__": gen = gen_func() re = func() pass 生成器函数这个对象是是什么时候产生的呢?是python编译字节码的时候…
1- PEP简介 PEP是Python增强提案(Python Enhancement Proposal)的缩写.社区通过PEP来给Python语言建言献策,每个版本的新特性和变化都是通过PEP提案经过社区决策层讨论.投票决议,最终确定的.也就是说,PEP是各种增强功能和新特性的技术规格,也是社区指出问题.精确化技术文档.推动Python发展的提案.一般情况下,可以将PEP视为Python语言的设计文档,包含了技术规范和功能的基本原理说明等. 2- PEP的类型及状态 每个PEP都有对应的类型及状…
PEP 530 -- 异步推导式 摘要 PEP 492和PEP 525使用async/await语法引入了协程.PEP 530建议添加list,set,dict推导式和生成器推导式的异步版本. 理论和目标 对如下代码做了改进. result = [] async for i in aiter(): if i % 2: result.append(i) 可以写成异步推导式的方式简化上面代码: result = [i async for i in aiter() if i % 2] 同样的该pep也…
一. 从列表中yield  语法形式:yield from <可迭代的对象实例> python中的列表是可迭代的, 如果想构造一个生成器逐一产生list中元素,按之前的yield语法,是在生成器内部遍历该list,每一轮用yiled依次产生一个生成的值. def generator(): for i in range(5): yield i return 'done' 采用yiled from语法,可以这样写, 每一个元素均用yield生成一个值, 是不是更简单 ! def generator…
Python 的 asyncio 类似于 C++ 的 Boost.Asio. 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知. Asyncio 是并发(concurrency)的一种方式.对 Python 来说,并发还可以通过线程(threading)和多进程(multiprocessing)来实现. Asyncio 并不能带来真正的并行(parallelism).当然,因为 GIL(全局解释器锁)的存在,Python 的多线程也不…
在Hibernate中,id元素的<generator>子元素用于生成持久化类的对象的唯一标识符. Hibernate框架中定义了许多生成器类. 所有的生成器类都实现了org.hibernate.id.IdentifierGenerator接口. 应用程序员可以通过实现IdentifierGenerator接口来创建自己的生成器类. Hibernate框架提供了许多内置的生成器类: assigned increment sequence hilo native identity seqhilo…
生成器与yield 函数使用yield关键字可以定义生成器对象.生成器是一个函数.它生成一个值的序列,以便在迭代中使用,例如: def countdown(n): print('倒计时:%s' % n) while n > 0: yield n n -= 1 return c = countdown(10) 如果调用该函数,就会发现其中的代码不会开始执行,相反它会返回一个生成器对象,接着该生成器对象就会在__next__()被调用时执行函数. print(c.__next__()) print(…
yield from 是在Python3.3才出现的语法.所以这个特性在Python2中是没有的. yield from 后面需要加的是可迭代对象,它可以是普通的可迭代对象,也可以是迭代器,甚至是生成器. 简单应用:拼接可迭代对象# 我们可以用一个使用yield和一个使用yield from的例子来对比看下. 使用yield 使用yield # 字符串 astr='ABC' # 列表 alist=[1,2,3] # 字典 adict={"name":"wangbm"…
本文目录 为什么要使用协程 yield from的用法详解 为什么要使用yield from . 为什么要使用协程# 在上一篇中,我们从生成器的基本认识与使用,成功过渡到了协程. 但一定有许多人,只知道协程是个什么东西,但并不知道为什么要用协程?换句话来说,并不知道在什么情况下用协程?它相比多线程来说,有哪些过人之处呢? 在开始讲yield from 之前,我想先解决一下这个给很多人带来困惑的问题. 举个例子.假如我们做一个爬虫.我们要爬取多个网页,这里简单举例两个网页(两个spider函数),…
迭代器 聊迭代器前我们要先清楚迭代的概念:通常来讲从一个对象中依次取出数据,这个过程叫做遍历,这个手段称为迭代(重复执行某一段代码块,并将每一次迭代得到的结果作为下一次迭代的初始值). 可迭代对象(iterable):是指该对象可以被用于for..in..循环,例如:集合,列表,元祖,字典,字符串,迭代器等. 在python中如果一个对象实现了 __iter__方法,我们就称之为可迭代对象,可以查看set\list\tuple..等源码内部均实现了__iter__方法 如果一个对象未实现__it…