我在这样的函数中调用了一个函数:
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)
但后一个例子违背了该计划的目的。
我认为问题是我需要在计数器函数中创建一个参数来解释迭代器函数。但是我的实际程序中的问题是我必须修改许多函数才能做到这一点,我试图避免这种情况。
我不熟悉函数内部的函数调用,非常感谢任何帮助,
答案 0 :(得分:2)
partial(counter, number)
相当于partial(counter, 0)
。所以代码调用了counter(0)
5次。
def counter(number):
number = number + 1
return number
def iterator(iteration, function, arg):
for i in range(iteration):
arg = function(arg)
return arg
number = 0
number = iterator(5, counter, number)
print number # => 5
def counter(number, delta):
number = number + delta
return number
def iterator(iteration, function, *args):
args = list(args)
for i in range(iteration):
ret = function(*args)
args[0] = ret
return ret
number = 0
number = iterator(5, counter, number, 5)
print number # => 25