生成器定义理解,直接上代码:

#!/user/bin env python
# author:Simple-Sir
# time:20181005
# 生成器
'''
# 列表生成式
a=[i for i in range(10)]
print(a) def fun_add(a,b):
return a+b
b = [fun_add(i,j) for i in range(1,4) for j in range(4,7)]
print(b)
''' '''
生成器: 一边循环一边计算的机制,就叫生成器generator
循环一次,计算一次,不需要先循环完再计算。
生成器只有在调用时才会生成相应的数据,
只记录当前位置的值
只有一个__next__方法 :获取下一个位置的值
'''
'''
# 生成器方式一:列表生成式
a = (i*2 for i in range(10))
print(a.__next__())
''' '''
# 生成器方式二:函数做生成器
# 斐波拉契数列,除了第一个和第二个外,任意一个数都由前两数相加得到。
def fblq(max):
n,a,b=0,0,1
# n=0
# a=0
# b=1
while n<max:
# print(b)
yield b # 将函数变成生成器,想要返回的值加yield,yield是一个类似return 的关键字
a,b = b,a+b
# 相当于 ==>
# t = (b,a+b) -->(1,0+1)
# a=t[0] -->1
# b=t[1] -->0+1
# 而不是 a=b,b=a+b
n += 1
return '执行完成' #异常消息
f = fblq(10)
print('打印第一个位置值',f.__next__())
print('打印下一个位置值',f.__next__())
print('打印下一个位置值',f.__next__())
print('开始循环打印')
''' '''
# 循环打印
for i in f:
print(i)
''' '''
g = fblq(3)
while True:
try:
x=next(g)
print('g',x)
except StopIteration as e:
print('错误信息',e.value)
break
''' '''
def scq_f():
for i in range(5):
for j in range(5):
k=i+j
#print(k)
yield k #关键点,将函数变成生成器,即将函数保持中断状态
return '错误信息'
# f = scq_f()
# for i in f:
# print(i)
f=scq_f() while True:
try:
x=next(f) # 即:f.__next__()
print('f',x)
except StopIteration as e:
print('错误信息:',e.value) #获取scq_f的return值
break '''

初识python: 生成器的更多相关文章

  1. @1-2初识Python爬虫

    初识Python爬虫 Python爬虫(入门+进阶)     DC学院 环境搭建: Python2与Python3的差异:python2与python3整体差异不大,大多是一些语法上的区别,考虑到py ...

  2. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  3. Python开发【第一篇】:初识Python

    初识python 一.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...

  4. Python开发【第二篇】:初识Python

    Python开发[第二篇]:初识Python   Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...

  5. python——生成器

    python——生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个 ...

  6. 初识python面向对象

    一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...

  7. 篇2 安卓app自动化测试-初识python调用appium

    篇2              安卓app自动化测试-初识python调用appium --lamecho辣么丑 1.1概要 大家好!我是lamecho(辣么丑),上一篇也是<安卓app自动化测 ...

  8. 2017-06-22初识python

    初识python #!/usr/bin/env python (python解释器的文件路径)# -*- coding:utf-8 -*- (使用的编码内型)# python 2.7 <需要加第 ...

  9. day01 初识Python

    今日主要内容 1.初识python 2.简单了解下python的数据类型 nubmer=int(input("请输入数字大小:")) if nubmer>66: print( ...

  10. Python生成器-博文读后感

    Windows 10家庭中文版,Python 3.6.4, 上午看过了一篇讲Python生成器的博文: 提高你的Python: 解释‘yield’和‘Generators(生成器)’(英文原文) 这篇 ...

随机推荐

  1. mybatis的dao层和service层的编码设计的配置

    /** 书写pojo类------>dao接口------>resources下建立同路径的dao.xml------>配置applicationContext.xml文件 **/ ...

  2. 学习笔记--html篇(1)

    html学习--1 href学习 href="javascript:void(0)" 阻止页面跳转类似于javascript:#,url无变化(死链接,返回undefined) h ...

  3. 利用 clip-path 实现动态区域裁剪

    背景 今天逛 CodePen,看到了这样一个非常有意思的效果: CodePen Demo -- Material Design Menu By Bennett Feely 这个效果还是有一些值得探讨学 ...

  4. Mac配置apache,mysql

    ===========Apache=============================== 1. 启动关闭Apache MAC系统已经预装了apache,启动.关闭.查看版本等命令如下: 启动a ...

  5. 显示大纲数字(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 话说摘要任务,给人的感觉,就像Word里的大纲级别,可我也知道,好多同学不习惯用大纲级别,而是偏爱用编号级别,最常见的也就 ...

  6. 解决iwrite无法粘贴问题

    使用iwrite写作的时候,会遇到系统禁止粘贴的障碍 按F12键,再按F1键,在Disable JavaScrip前面的方框里打上勾就可以愉快的粘贴了

  7. 后端调用WebApi

    using System;using System.Collections.Generic;using System.Linq;using System.Net.Http;using System.W ...

  8. java 网络编程基础 UDP协议DatagramSocket,MulticastSocket 实现局域网聊天软件(Server + Client模式)

      开发思路: 服务端两个Socket: UDP的DatagramSocket接收客户端消息. 广播multicastSocket 发送广播消息 客户端一个Socket: multicastSocke ...

  9. 好奇怪啊,如果邮箱JSON格式的字符串不是在一行上,那么转为JSON将转换不成功,估计是数据格式有问题吧

    好奇怪啊,如果邮箱JSON格式的字符串不是在一行上,那么转为JSON将转换不成功,估计是数据格式有问题吧, 打印出的数据必须是如下的在一行的字符串,才可以转换为JSON格式成功.

  10. c++内存分布之虚析构函数

    关于 本文代码演示环境: VS2017+32程序 虚析构函数是一种特殊的虚函数,可以知道,虚函数影响的内存分布规律应该也适用虚析构函数.看看实际结果. Note,一个类中,虚析构函数只能有一个. 本文 ...