我试图在另一个脚本中循环浏览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'>
一直在搜索,但似乎找不到任何可能导致这种情况的事情。
答案 0 :(得分:1)
该程序正在按照您的要求执行操作:
当您在程序开始时执行import test, import test2
时,
这些模块是运行的 - 如果它们包含顶级打印语句,它就是
这一点,这些陈述将产生输出。
当您到达for i...
区块时,该程序会正确关联您的。{1}}
y
变量以及对模块的引用。但是像你一样打印模块对象,
不要让模块再次运行。而是打印模块的字符串表示,这就是你所看到的。
为了达到我想你想要的,你必须将输出封装在模块内的一个函数中,比如一个“赋值器”函数,它返回所需的值 - /然后,只需更改你的行
print y
到
print y.evaluator()