1

したがって、次の関数を作成する必要があります->反復します。最初の呼び出しでは ID を返し、2 番目の関数では 3 番目の func.func で返す必要があります。それを行う方法はありますか?iterを調べてみたところ、次のメソッド buf が失敗しました: (

>>> def double(x):
        return 2 * x

>>> i = iterate(double)
>>> f = next(i)
>>> f(3)
3
>>> f = next(i)
>>> f(3)
6
>>> f = next(i)
>>> f(3)
12
>>> f = next(i)
>>> f(3)
24
4

1 に答える 1

2

おそらくこのようなもの:

>>> import functools
>>> def iterate(fn):
    def repeater(arg, _count=1):
        for i in range(_count):
            arg = fn(arg)
        return arg
    count = 0
    while True:
        yield functools.partial(repeater, _count=count)
        count += 1


>>> i = iterate(double)
>>> f, f2, f3, f4 = next(i), next(i), next(i), next(i)
>>> f(3), f2(3), f3(3), f4(3)
(3, 6, 12, 24)
>>> f(3), f2(3), f3(3), f4(3)
(3, 6, 12, 24)

したがって、元の関数をパラメーターとして指定された回数だけ呼び出す関数を作成し、countパラメーターを事前にバインドします。

于 2013-03-12T16:15:36.567 に答える