python代码:生成器

本人的话:原书只写了生成器,没有写生成器表达式。可能是书太古老了。还需要查资料看看生成器表达式,这样有关生成器的知识才算是完整的。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:xiaxiaoyun
@file:test02.py
@time:2022-04-03 21:04
"""
"""
书《Python核心编程(第二版).pdf》,作者:Wesley J. Chun协同程序是可以运行的独立函数调用,可以暂停或者挂起,并从程序离开的地方继续或者重新开始。在有调用者和(被调用的)协同程序也有通信。
举例来说,当协同程序暂停的时候,我们能从其中获得一个中间的返回值,当调用回到程序中时,能够传入额外或者改变了的参数,但仍能够从我们上次离开的地方继续,并且所有状态完整。挂起返回出中间值并多次继续的协同程序被称为生成器。
从语法上讲,生成器是一个带yield语句的函数。
一个生成器能暂停执行并返回一个中间的结果(那就是yield语句的功能),返回一个值给调用者并暂停执行。当生成器的__next__()方法被调用的时候,它会准确地从离开地方继续(当它返回[一个值以及]控制给调用者时)。
当到达一个真正的返回或者函数结束没有更多的值返回(当调用__next__()),一个StopIteration异常就会抛出。
Python的for循环有next()调用和对StopIteration的处理。
"""
# # 例子1:一个简单的生成器
# def simpleGen():
#     yield 1
#     yield '2 --> punch!'
#
# myG = simpleGen()
# print(myG.__next__())  # 1
# print(myG.__next__())  # 2 --> punch!
# print(myG.__next__())  # 程序出错,抛出异常StopIteration
# # ----# # 例子2:使用for循环
# # Python的for循环有next()调用和对StopIteration的处理。
# def simpleGen():
#     yield 1
#     yield '2 --> punch!'
#
# for eachItem in simpleGen():
#     print(eachItem)
# """
# Output:
# 1
# 2 --> punch!
# """
# # ----# # 例子3:创建一个带序列并从那个序列中返回一个随机元素的随机迭代器。
# from random import randint
# # 解释:def randint(self, a, b):  # Return random integer in range [a, b], including both end points.
#
# def randGen(aList):
#     while len(aList) > 0:
#         yield aList.pop(randint(0, len(aList) - 1))  # 每个返回的元素将从那个队列中消失,像一个list.pop()和random.choice()的结合的归类。
#
# for item in randGen(['rock', 'paper', 'scissors']):
#     print(item)
# """
# Output:
# rock
# scissors
# paper
# """# # 例子4:生成器在闭包中的运用
# def counter(start_at=0):
#     count = start_at
#     while True:
#         val = (yield count)
#         if val is not None:
#             count = val
#         else:
#             count += 1
# """
# 生成器带有一个初始化的值,对每次对生成器__next__()调用以1累加计数。
# 用户也可以选择重置这个值,如果他们非常想要用新的值来调用send()不是调用next()。
# 这个生成器是永远运行的,所以如果你想要终结它,调用close()方法。
# """
# # 调用
# count = counter(5)
# print(count.__next__())  # 5
# print(count.__next__())  # 6
# print(count.send(9))  # 9
# print(count.__next__())  # 10
# count.close()
# print(count.__next__())  # 程序抛出异常StopIteration
# # ----
# ====

python代码:生成器相关推荐

  1. python自动生成鸡汤文_20行python代码实现鸡汤智能生成器

    "Don't think of the overwhelming majority of the impossible." "不要去想不可能之事" " ...

  2. append函数_高质量python代码:考虑用生成器来改写直接返回列表的函数

    写在前面:内容参照自<Effective Python>,其实你完全可以直接去看书,什么?你不想自己看书,那么你也可以关注我,我会不定期从书中挑出常用到的有效方法分享出来,这样你就可以一边 ...

  3. python代码大全和用法用量_Python生成器的使用方法和示例代码

    本文是<Effect Python 编写高质量Python代码的59个有效方法>的学习笔记.主要记录生成器的使用方法和示例代码. 返回队列的函数 如果函数要产生一系列结果,那么最简单的做法 ...

  4. python 按钮更改输入框的值_利用 50 行 Python 代码构建一个在线文本生成器!

    本指南将引导你学习构建一个自动完成任意输入文本的Web应用程序. 作者 | Dev Sharma译者 | 苏本如,责编 | 郭芮出品 | CSDN(ID:CSDNnews) 以下为译文: 在本文中,我 ...

  5. python代码图片头像_GitHub - nonPointer/avatar_generator: 头像图片生成器 Python代码

    avatar_generator 哈希头像图片生成器 Python代码 Identicon 在很多大型IT网站上可以见到,比如 Github, Sourceforge, Stackoveflow 等等 ...

  6. github 头像生成 java_GitHub - haoziiy/avatar_generator: 头像图片生成器 Python代码

    avatar_generator 哈希头像图片生成器 Python代码 Identicon 在很多大型IT网站上可以见到,比如 Github, Sourceforge, Stackoveflow 等等 ...

  7. python代码怎么写出色_如何写出更具有Python风格的代码,五分钟教会你!

    我们都喜欢 Python,因为它让编程和理解变的更为简单.但是一不小心,我们就会忽略规则,以非 Pythonic 方式编写一堆垃圾代码,从而浪费 Python 这个出色的语言赋予我们的优雅.Pytho ...

  8. 自动检索、修复Python代码bug,微软推出DeepDebug

    视学算法报道 机器之心编辑部 还在为不断的 debug 代码烦恼吗? 本地化 Bug 并修复程序是软件开发过程中的重要任务.在本篇论文中,来自微软 Cloud+AI 部门的研究者介绍了 DeepDeb ...

  9. 《编写高质量Python代码的59个有效方法》——第10条:尽量用enumerate取代range

    本节书摘来自华章社区<编写高质量Python代码的59个有效方法>一书中的第10条:尽量用enumerate取代range,作者[美]布雷特·斯拉特金(Brett Slatkin),更多章 ...

最新文章

  1. Https的底层原理
  2. 学习JS的心路历程-参数传递方式(上)
  3. C++实用技巧(二)
  4. java 21 - 6 字符缓冲流的特殊方法以及该方法高效复制文件
  5. IBASE view WD_DESTROY - ON_NEW_FOCUS
  6. 【deep learning学习笔记】注释yusugomori的LR代码 --- LogisticRegression.cpp
  7. 汽车在转型!福特中国的架构实践
  8. 【创建型】Prototype模式
  9. C语言经典面试题100道(校对详解版)
  10. CMOS模拟集成电路设计学习笔记
  11. 坚持写博客对我们有什么好处
  12. 【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第四节 窗体的移动
  13. 小米路由器 mini 重新刷回官方固件
  14. 爱快iKuai 安装成功后运行提示程序运行中解决办法
  15. 《Spring实战》读书笔记-第6章 渲染Web视图
  16. 创建型设计模式(待更新)
  17. Python3---站在大佬肩膀写爬虫-爬取网易云音乐热歌榜歌曲热评(精彩评论)
  18. js/jquery(2)
  19. 《先进PID控制 MATLAB仿真 第2版 刘金琨等编》【shallow】
  20. 中国有机淀粉市场趋势报告、技术动态创新及市场预测

热门文章

  1. 瑞士轮赛制模拟器_ELEAGUE Major将采用瑞士轮赛制
  2. 懒人的七种超级减肥方法 - 健康程序员,至尚生活!
  3. php pear pecl
  4. 【资料】社交媒体——从社交到战场
  5. JS div匀速移动动画与变速移动动画
  6. 主机安全是什么意思?主机安全体检包含哪些方面?
  7. 键鼠大师识别图片鼠标连点模拟点击和键盘
  8. 重返天梯-L3-014 周游世界 (30 分)(dfs)
  9. 【前端小实战】拼多多首页导航布局
  10. simulink接收串口数据_基于Unity串口通信的解决方案