Python Itertools循环输出无效

时间:2014-09-24 20:16:57

标签: python cycle itertools

我试图在另一个脚本中循环浏览2个python脚本,如下所示:

import itertools
import test
import test2

x = [test, test2]

cycle = itertools.cycle(x)

def x():
    global cycle
    return cycle.next()


for i in range(9):
    y = x()
    print y

当我运行它时,它将正确打印前两个然后接下来的7行说

<module 'test' from 'C:\Users\user\Desktop\Python\test.py'>
<module 'test2' from 'C:\Users\user\Desktop\Python\test2.py'>
<module 'test' from 'C:\Users\user\Desktop\Python\test.py'>
<module 'test2' from 'C:\Users\user\Desktop\Python\test2.py'>
<module 'test' from 'C:\Users\user\Desktop\Python\test.py'>
<module 'test2' from 'C:\Users\user\Desktop\Python\test2.py'>
<module 'test' from 'C:\Users\user\Desktop\Python\test.py'>
<module 'test2' from 'C:\Users\user\Desktop\Python\test2.py'>
<module 'test' from 'C:\Users\user\Desktop\Python\test.py'>

一直在搜索,但似乎找不到任何可能导致这种情况的事情。

1 个答案:

答案 0 :(得分:1)

该程序正在按照您的要求执行操作:

当您在程序开始时执行import test, import test2时, 这些模块是运行的 - 如果它们包含顶级打印语句,它就是 这一点,这些陈述将产生输出。

当您到达for i...区块时,该程序会正确关联您的。{1}} y变量以及对模块的引用。但是像你一样打印模块对象, 不要让模块再次运行。而是打印模块的字符串表示,这就是你所看到的。

为了达到我想你想要的,你必须将输出封装在模块内的一个函数中,比如一个“赋值器”函数,它返回所需的值 - /然后,只需更改你的行

print y

print y.evaluator()