【发布时间】:2013-11-10 04:31:02
【问题描述】:
我有一个从这样的函数中调用的函数:
def counter(number):
number = number + 1
return number
def iterator(iteration, function):
for i in range(iteration):
mfunction = function
output = mfunction()
return output
我想这样称呼它:
number = 0
number = iterator(5, partial(counter, number))
print number
这返回 1,而它应该返回 5,因为 count 函数应该被调用了 5 次。
我意识到不知何故数据输出不正确,但我不知道如何从 for 循环中返回。
这个问题可能看起来多余,因为我可以很容易地做这样的事情:
for i in range(5):
number = counter(number)
但是后一个例子违背了这个程序的目的。
我认为问题在于我需要在计数器函数中创建一个参数来解释迭代器函数。但我实际程序中的问题是我必须修改许多函数才能做到这一点,我正在努力避免这种情况。
我对在函数内部调用函数不太熟悉,如果有任何帮助,将不胜感激,
【问题讨论】:
-
number = number + 1incounter函数只更改参数number,而不更改函数外的number。 -
partial(counter, number)等价于partial(counter, 0)。所以代码调用了counter(0)5 次。 -
是的,我只是不知道怎么把那个号码弄出来
-
它打印为 1,因此该数字受到影响。它只是不会在 for 循环中重复。
-
受
number = iterator(..)影响。 (迭代器函数返回=所有5次迭代完成后。不是在单独调用counter之后)