免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3400 | 回复: 10
打印 上一主题 下一主题

python yield问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-15 16:18 |只看该作者 |倒序浏览
#/usr/bin/env python
def test1():
    yield 1
    yield 2
    yield 3
    for aa in test1():
        yield aa
for aa in test1():
    print aa,

为什么无法输出1,2,3,1,2,3呢?

论坛徽章:
0
2 [报告]
发表于 2012-03-15 16:24 |只看该作者
。。。
你确定只是无法输出1,2,3,1,2,3?

论坛徽章:
0
3 [报告]
发表于 2012-03-15 16:36 |只看该作者
回复 2# zyd320

嗯,,有报错,,难道你的可以吗?
   

论坛徽章:
0
4 [报告]
发表于 2012-03-15 16:48 |只看该作者
你这个会无终止条件的递归下去的

论坛徽章:
0
5 [报告]
发表于 2012-03-15 16:57 |只看该作者
  1. def test():
  2. print '1';
  3. yield 1;
  4. print '2';
  5. yield 2;
  6. print '3';
  7. yield 3

  8. h = test();
  9. h.next();
  10. h.next();
  11. h.next();

  12. 你想这样?
复制代码

论坛徽章:
0
6 [报告]
发表于 2012-03-15 16:57 |只看该作者
回复 4# zyd320


    确实是你这样说的,,,但是还是不太理解这个过程,,能否说清楚点..

论坛徽章:
0
7 [报告]
发表于 2012-03-15 17:15 |只看该作者
回复 5# dada20042030


    for 循环就是调用next()方法,,

论坛徽章:
0
8 [报告]
发表于 2012-03-20 02:43 |只看该作者
1 #!/usr/bin/python
  2
  3
  4 def test1 ():
  5    count = 1
  6
  7    yield 1
  8    yield 2
  9    yield 3
10
11    for aa in test1() :
12       if count == 6:
13          raise StopIteration
14       count = count + 1
15       yield aa
16
17 for aa in test1 ():
18    print aa

论坛徽章:
0
9 [报告]
发表于 2012-03-20 02:45 |只看该作者
应该是count == 4

论坛徽章:
0
10 [报告]
发表于 2012-03-20 10:58 |只看该作者
回复 9# lionchen779


    这样确实是可以,,但是太不自动化了吧,,
我这样写主要是参考os.walk()函数..
但是他也没有用这样的计数器,,
不太明白他的为什么行我写的不行..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP