object()()
は、ちょうど_result = object()
と_result()
です。最初の呼び出しが呼び出し可能なオブジェクトを返す限り、2番目の呼び出し式は続行できます。
examplefunction()
呼び出しで別の関数が返されましたか?機能はあまりにもオブジェクトなので、あなただけの既存の関数を返すことができます:
def examplefunction():
return secondfunction
def secondfunction():
return 10
た時点examplefunction()()
は10
を生成します。
また、その本体の一部としてその関数オブジェクトを定義することによって、あなたのexamplefunction()
呼び出しは、新しい関数オブジェクトごとに生産することができます:
は
def examplefunction():
def nestedfunction():
return 10
return nestedfunction
これは、同じ結果が得られますが、nestedfunction()
が持っているという追加の利点examplefunction
(これらは、クロージャと呼ばれます)で定義されたすべてのローカル名へのアクセスを許可(読み取り)します。私はあなたの割り当てはあなたにこれらの原則を教えしようとしていると思われる
def examplefunction(base):
def nestedfunction():
return base * 2
return nestedfunction
examplefunction(5)() # produces 10
:これは、あなたはどのように振る舞うnestedfunction()
parameteriseすることができます。
ご質問は具体的な方法で回答するにはあまりにも曖昧です。簡単な答えは、関数を返すために 'examplefunction'が必要だということです。それを "double()()"とは考えないでください。値を返すのはone()です。その値は関数であり、second()で呼び出されます。 – BrenBarn
'()()'は* a *関数を呼び出しません。 – chepner
@chepnerそうかもしれない。関数がそれ自身を返すと、それは* a *関数を呼び出します(2回)。 –