我是靠谱客的博主 标致身影,最近开发中收集的这篇文章主要介绍python-迭代器demo,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#迭代器是是一个定义了__iter__()方法的类。__init__,__iter__,__next__,起始和结束都是一对下划线,这些方法不是直接调用的,当使用类或实例的某些语法时,python会自动调用它们。
class Fib:
	def __init__(self,max):  #调用Fib(max)会创建该类的一个真实的实例,并以max作为参数调用__init__()方法。__init__()方法以实例变量保存最大值,以便其它方法可以引用。
		self.max = max

	def __iter__(self):  #当有人调用iter(fib),__iter__()就会被调用,for循环会自动调用它,在完成迭代初始化后,__iter__()能返回任何实现了__next__()方法的对象
		self.a = 0
		self.b = 1
		return self

	def __next__(self):  #当在迭代器的实例中调用next()方法时,__next__()会自动调用。
		fib = self.a
		if fib > self.max:
			raise StopIteration  #当__next__()抛出StopIteration异常,这是给调用者表示迭代用完的信号,和大多数异常不同,这不是错误,是正常情况,仅表示迭代器没有值了。
		self.a,self.b = self.b,self.a + self.b
		return fib
#fi=Fib(5)
#print (fi)
for n in Fib(10000):
	print(n,end=' ')


#!/usr/bin/python
# encoding: utf8
class LazyRules:
	rules_filename = 'plural-rules.txt'
	def __init__(self):
		self.pattern_file = open(self.rules_filename,encoding='utf-8') #打开文件模式,但不读取任何内容
		self.cache = []                              #初始化缓存

	def __iter__(self):
		self.cache_index = 0
		return self

	def __next__(self):
		self.cache__index += 1
		if len(self.cache) >= self.cache__index:
			return self.cache[self.cache__index - 1]

		if self.pattern_file.closed:
			raise StopIteration

		line = self.pattern_file.readline()

		if not line:
			self.pattern_file.close()
			raise StopIteration

		pattern,search,replace = line.split(None,3)
		funcs = build_match_and_apply_functions(pattern,search,replace)
		self.cache.append(funcs)
		return funcs 

rules = LazyRules()
print (rules)


最后

以上就是标致身影为你收集整理的python-迭代器demo的全部内容,希望文章能够帮你解决python-迭代器demo所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部