当前位置: 首页 > news >正文

做网站婚介简历怎么写电影网站开发

做网站婚介简历怎么写,电影网站开发,网站搭建dns有用吗,seo模拟点击工具菜鸟教程《Python 3 教程》笔记(13) 13 迭代器与生成器13.1 迭代器13.1.1 创建一个迭代器13.1.2 StopIteration 13.2 生成器13.3 yield 使用浅析13.3.1 通过 iterable 对象来迭代13.3.2 使用 isgeneratorfunction 判断13.3.3 类的定义和类的实例13.3.4 r…

菜鸟教程《Python 3 教程》笔记(13)

  • 13 迭代器与生成器
    • 13.1 迭代器
      • 13.1.1 创建一个迭代器
      • 13.1.2 StopIteration
    • 13.2 生成器
    • 13.3 yield 使用浅析
      • 13.3.1 通过 iterable 对象来迭代
      • 13.3.2 使用 isgeneratorfunction 判断
      • 13.3.3 类的定义和类的实例
      • 13.3.4 return 的作用
      • 13.3.5 另一个 yield 的例子

13 迭代器与生成器

出处: 菜鸟教程 - Python3 迭代器与生成器

13.1 迭代器

迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退

迭代器有两个基本的方法:iter()next()

字符串,列表或元组对象都可用于创建迭代器:

>>> list = [1, 2, 3, 4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2

13.1.1 创建一个迭代器

把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__()__next__()

  • __iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。

  • __next__() 方法会返回下一个迭代器对象。

class MyNumbers:def __iter__(self):self.a = 1return selfdef __next__(self):x = self.aself.a += 1return xmyclass = MyNumbers()
myiter = iter(myclass)print(next(myiter))  # 1
print(next(myiter))  # 2print(type(myclass))  # <class '__main__.MyNumbers'>
print(type(myiter))   # <class '__main__.MyNumbers'>
print(myclass is myiter)  # True
print(next(myclass))  # 1
print(next(myclass))  # 2

13.1.2 StopIteration

StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在 next() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。

class MyNumbers:def __iter__(self):self.a = 1return selfdef __next__(self):if self.a <= 20:x = self.aself.a += 1return xelse:raise StopIteration

13.2 生成器

在 Python 中,使用了 yield 的函数被称为生成器(generator)。

yield 是一个关键字,用于定义生成器函数,生成器函数是一种特殊的函数,可以在迭代过程中逐步产生值,而不是一次性返回所有结果。

跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

def countdown(n):while n > 0:yield nn -= 1# 创建生成器对象
generator = countdown(5)# 通过迭代生成器获取值
print(next(generator))  # 输出: 5
print(next(generator))  # 输出: 4
print(next(generator))  # 输出: 3# 使用 for 循环迭代生成器
for value in generator:print(value)  # 输出: 2 1

13.3 yield 使用浅析

出处: 菜鸟教程 - Python yield 使用浅析

13.3.1 通过 iterable 对象来迭代

在 python 2 中,range() 为 list 对象,会生成 list,xrange() 为 iterable 对象。在 python 3 中,range() 和 xrange() 合并了。

13.3.2 使用 isgeneratorfunction 判断

可以利用 isgeneratorfunction 判断一个函数是否是一个特殊的 generator 函数。

def fab(max): n, a, b = 0, 0, 1 while n < max: yield b      # 使用 yielda, b = b, a + b n = n + 1from inspect import isgeneratorfunction 
print(isgeneratorfunction(fab))  # True

13.3.3 类的定义和类的实例

fab 是一个 generator function,而 fab(5) 是调用 fab 返回的一个 generator,好比类的定义和类的实例的区别

import types 
print(isinstance(fab, types.GeneratorType))  # False
print(isinstance(fab(5), types.GeneratorType))  # True

fab 是无法迭代的,而 fab(5) 是可迭代的

from collections import Iterable 
print(isinstance(fab, Iterable))  # False 
print(isinstance(fab(5), Iterable))  # True

13.3.4 return 的作用

在一个 generator function 中,如果没有 return,则默认执行至函数完毕,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。

13.3.5 另一个 yield 的例子

另一个 yield 的例子来源于文件读取。如果直接对文件对象调用 read() 方法,会导致不可预测的内存占用。好的方法是利用固定长度的缓冲区来不断读取文件内容。通过 yield,我们不再需要编写读文件的迭代类,就可以轻松实现文件读取。

def read_file(fpath): BLOCK_SIZE = 1024 with open(fpath, 'rb') as f: while True: block = f.read(BLOCK_SIZE) if block: yield block else: return
http://www.yayakq.cn/news/99635/

相关文章:

  • 建设工程消防设计备案凭证查询网站合肥免费招聘网站
  • 建设平台网站防红短链接生成
  • seo工作内容济南做网站优化
  • 建设一个门户网站linode wordpress
  • 哪里有做网站的公司wordpress后缀
  • 网络建站杭州市建设工程交易网
  • 网站的软件维护包括什么不用付费的正能量软件
  • 网站开发用怎么语言仿v电影 wordpress
  • 网站如何建设名称安康学院费用
  • 公司网站排名优化手段网站开发连接数据库的方法
  • 西安教育类网站建设公司有没有网站做字体变形
  • 整站优化哪家专业花店网站建设环境分析
  • 做58推广网站找哪家好彩票系统网站建设
  • 重庆建网站价格wordpress salient 8
  • 电子商业网站建设步骤第三方网站建设
  • 钓鱼网站搭建教程中山网络公司网站
  • 广东网站建设报价如何公司简介模板图片
  • 网站开发设计图片cms wordpress 区别
  • 虚拟主机做视频网站可以吗湘潭做网站 定制磐石网络
  • php做教育网站合肥高新区建设发展局网站
  • 做ppt设计师哪个网站好wordpress子域名图床
  • 商城网站建设企业南京网站建设 雷仁网
  • 做网站须知怎么做app下载网站
  • 网页标准化对网站开发维护的好处国内免费建网站
  • 有了网站怎样做公众号杭州做公司网站的公司
  • 做论坛网站需要哪些前置审批设计网站公司选泽y湖南岚鸿询 问
  • 浏阳做网站推荐青岛网站建设要多少钱
  • 廊坊建设网站企业可以上传自己做的视频的网站
  • 超酷的网站设计建设官方网站的费用账务处理
  • 免费网站建设模版云盘东胜区教育网站入口