用户:
一个STUB用户_6923702查看:2 回复:2 评论:2 创建时间:2020-03-04T19:47:46
就是可以迭代的东西嘛……[哔——]
介绍这个iter()
#当然,打印一个迭代器对象会返回内存位置的
b = iter(['Link','is','a','handsome'])
for a in range(4):
print(next(b), end=' ')
看,iter()把这东西变成了个迭代器对象
连计算机都要叫我handsome233333
PIA!
好好好我好好说别打我
介个东西呢居然可以定义!
class handsome(object):
def __init__(self,name='Link'):
self.name = name
def __iter__(a):
print('哈哈哈哈哈哈哈哈哈哈给你个礼物')
return iter(['Link','is','a','handsome'])
def __next__(a):
for i in range(100):
print('林克是个大帅哥!!!!!!1')
return True
a = handsome()
b = iter(a)
print(next(a))
哈哈哈哈哈哈哈哈我真的是机智啊哈哈哈哈
当然如果你很正经的话,就可以自己来定义了,比如参考这个num类
class num(object):
def __init__(self,num=0):
self.num = num
def __iter__(self):
b = []
for i in range(0,101):
b.append(self.num+i)#创建一个列表,从self.num+0到+100
return iter(b)
def __next__(self):
return self.num+1
a = num()
b = iter(a)
for i in range(len(list(b))):
try:
print(next(b))
except StopIteration:
print('hahahahahaha')
print(next(a))
看着,很正经把如果遇到stopiteration就只能异常处理呗try except就ok,我也不知道咋处理
懒得讲了
简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。
源自菜鸟教程
点赞0
评论