您的位置:首页 > 移动开发 > Objective-C

python 3.2 错误 ‘generator’ object has no attribute ‘next’

2016-06-24 10:08 671 查看
下面是一段简单的示例

#定义Generator函数

def func(n):

    for i in range(n):

        yield i

#在for循环中输出

for i in func(3):

    print(i)

#使用next()输出

r = func(4)
print(r.next())

运行结果:

0

1

2

Traceback (most recent call last):

  File "C:\Users\BEM\Desktop\test.py", line 10, in <module>

    print(r.next())

AttributeError: 'generator' object has no attribute 'next'

出错的原因是因为:

原因是在Python3.2中 generator(有yield关键字的函数则会被识别为generator函数)中的next变为__next__了,next是以前版本中的方法

修改为下面这样运行正常



print(r.next())

代码修改为

print(next(r))

就可以成功运行

因为只是测试了Python3.2中next()的方法,应该Python 3.x都是采用上述方法

附加提示:当在使用next(r)函数前使用list(r)时会出现以下错误:

Traceback (most recent call last):

  File "C:\Users\BEM\Desktop\test.py", line 12, in <module>

    print(next(r))

StopIteration

因为list()函数已经把数据以列表的形式生成,当使用next()时已经没有数据可生成了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python next 函数