博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
迭代器,生成器and文件监听
阅读量:5151 次
发布时间:2019-06-13

本文共 1317 字,大约阅读时间需要 4 分钟。

迭代器

#只要是能被for循环的数据类型  就一定拥有__inter__方法

  print([].__iter__())

一个列表执行了__iter__()之后的返回值就是一个迭代器

# Iterable 可迭代的 -- > __iter__ #只要含有__iter__方法的都是可迭代的

# [].__iter__() 迭代器 -- > __next__ #通过next就可以从迭代器中一个一个的取值

# 只要含有__iter__方法的都是可迭代的 —— 可迭代协议

# 迭代器的概念

# 迭代器协议 —— 内部含有__next__和__iter__方法的就是迭代器

# 迭代器协议和可迭代协议

# 可以被for循环的都是可迭代的
# 可迭代的内部都有__iter__方法
# 只要是迭代器 一定可迭代
# 可迭代的.__iter__()方法就可以得到一个迭代器
# 迭代器中的__next__()方法可以一个一个的获取值

# for循环其实就是在使用迭代器

# iterator
# 可迭代对象
# 直接给你内存地址
# print([].__iter__())
# print(range(10))

#for

#只有 是可迭代对象的时候 才能用for
#当我们遇到一个新的变量,不确定能不能for循环的时候,就判断它是否可迭代

# for i in l:

# pass
#iterator = l.__iter__()
#iterator.__next__()

#迭代器的好处:

# 从容器类型中一个一个的取值,会把所有的值都取到。
# 节省内存空间
#迭代器并不会在内存中再占用一大块内存,
# 而是随着循环 每次生成一个
# 每次next每次给我一个

生成器

生成器函数--------本质上就是我们自己写得函数

 

#生成器函数

# def generator():
# print(1)
# return 'a'
#
# ret = generator()
# print(ret)

 

 

#只要含有yield关键字的函数都是生成器函数

# yield不能和return共用且需要写在函数内
# def generator():
# print(1)
# yield 'a'
# #生成器函数 : 执行之后会得到一个生成器作为返回值

 

文件监听

1 def tail(filename): 2 #     f = open(filename,encoding='utf-8') 3 #     while True: 4 #         line = f.readline() 5 #         if line.strip(): 6 #             yield line.strip() 7 #  8 # g = tail('file') 9 # for i in g:10 #     if 'python' in i:11 #         print('***',i)

 

心里有点乱。。。先这样吧。

 

转载于:https://www.cnblogs.com/qinghuani/p/8179839.html

你可能感兴趣的文章
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>
Struts2返回JSON数据的具体应用范例
查看>>
js深度克隆对象、数组
查看>>
socket阻塞与非阻塞,同步与异步
查看>>
团队工作第二天
查看>>
System类
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>
Xamarin Visual Studio不识别JDK路径
查看>>
菜鸟“抄程序”之道
查看>>
Ubuntu下关闭防火墙
查看>>
TCP/IP 邮件的原理
查看>>
w3m常用快捷键
查看>>
【Unity 3D】学习笔记四十一:关节
查看>>
原型设计工具
查看>>
windows下的C++ socket服务器(4)
查看>>
css3 2d转换3d转换以及动画的知识点汇总
查看>>