def do_twice(f,x): f(x) f(x) def do_four(f,x): do_twice(do_twice(f,x),x) def printx(x): print(x) do_four(printx,"text")
私は言語の初心者です。私は関数がパラメータとして簡単に送信できることを発見しました。だから私はそれに取り組むことにしました。しかし、私はこれを試してみましたが、ランダムに変更されたバージョンもありました。なぜこの小さな関数乗算の仕事はありません
def do_four(f,x): do_twice(f,x) do_twice(f,x)
私はそのような問題を解決することができることを知っている、しかし、1つは、以前に動作していないので、私は理由を知りたいと思いました。
それは "失敗"ですか?あなたが期待している行動、あなたが見ている行動、そしてそれがいかに適切ではないかを詳しく教えてください。エラーが発生していますか?次に、スタックトレースを含む完全なエラーメッセージを投稿します。 –
すてきな実験! 'do_twice1(f、x)'と 'do_twice2(f、x)'を定義し、 'do_twice1(do_twice2(printx、 'text')、 'text')'を呼び出すと問題は解決しますか?私の考えは、それ自身の中から機能を呼び出さないでください。例えば。あなたはモジュールを再帰的にインポートすることを許可していません –
この行 'do_twice(do_twice(f、x)、x)'に 'do_twice(f、x)'を間違って渡しています。 'do_twice'の最初のパラメータは関数参照であり、関数呼び出しではありません(この場合は' None'です)。 –