Python方法未运行

时间:2018-10-15 13:01:58

标签: python-2.7

我有一个方法def winnings(right, altright): altcorrect = False # ... elif right == 4: if altcorrect: return 45 # maybe add an else here? # or if you get to this point, _always_ return 0 return 0 ,我试图在我的脚本中运行。 该方法是在脚本的基础上调用的,但是似乎没有任何执行。

我已经在调试中放置了play_lottery()行,我什至看不到执行到此为止。

有什么想法吗?

这是在OSX上运行的print 10

Python 2.7.10

2 个答案:

答案 0 :(得分:1)

调用生成器函数将创建一个生成器对象。但是,您实际上从未真正向生成器请求任何内容,因此它不会运行。

您需要从生成器中请求值:

import itertools

lot_gen = play_lottery()

# Take the first 3
vals = list(itertools.islice(lot_gen, 3)) 

这至少会使您的发电机运行。

您不必使用islice。您只需要通过某种方式向生成器请求值。

答案 1 :(得分:1)

您创建的是python生成器,因为yield关键字用于辅助功能。 python中的生成器是内存友好的。除非您在生成器上调用 next 方法,直到 StopIteration

,生成器才会执行

这里的代码看起来不错。您所要做的就是以下任何一种。首先将生成器放入变量

play_lottery_gen = play_lottery()

现在您可以使用next方法检索下一个值

play_lottery_gen.next()

或者,您也可以内置方法 next 来检索下一个值

next(play_lottery_gen)

您只需将生成器传递到 list 工厂函数即可将其转换为列表。但这是内存不足

list(play_lottery_gen)