0
A
答えて
3
デコレータは関数を変更する関数の構文的砂糖であり、後者の関数はそれ自身の修正版のように動作します。
簡単な例から始めましょう。私たちは一つのパラメータを取る関数を受け取り、そして機能つのパラメータを取り、元の関数が返すだろうか、二重の復帰を返す
def double_me(f):
return lambda x: 2 * f(x)
を書くと言います。我々は最初のdouble_the_add_one
を変更してdouble_the_add_one
に戻ってそれをバインドされ、その後、double_the_add_one
を定義し
def double_the_add_one(x):
return x + 1
double_the_add_one = double_me(double_the_add_one)
>>> double_the_add_one(1)
4
注:その後、我々はこのようにそれを使用することができます。だから、それはそれ自身の変更されたバージョンです。それはもともと何をするのでしょうか?その後、結果を倍増させます。それは、単一の位置引数があったと仮定
:
@double_me def double_the_add_one(x): return x + 1 >>> double_the_add_one(1) 4
上記デコレータがその偉大ではなかったことを注意:デコレーターは、単純にこのビットより簡潔にします。
キーワード引数がないと仮定しました。
デコレーションされた機能にドキュメントストリングがあった場合は、それが詰まっていました。
あなたはおそらく、実際にそこにドキュメントの例を使用してデコレータを書くことfunctools.wraps
を使用する必要があります。
関連する問題
- 1. コンパイル時の関数デコレータ(ラッパー)
- 2. Pythonのデコレータ - クラス
- 3. デコレータのpython
- 4. __setattr__クラスのデコレータのpython
- 5. ユニットテストのモックPythonデコレータ
- 6. オブザーバーとデコレータは、私はプログラムがデコレータ/ラッパーとして飲料を行いコーヒーハウスのthats持っ++ * *
- 7. Python Decorator 3.0とデコレータへの引数
- 8. Pythonクラスのデコレータの引数
- 9. JavaのPython風のデコレータ?
- 10. Pythonデコレータ関数の実行
- 11. デコレータのPython命名規則
- 12. パラメータ付きのPython 2.6デコレータ
- 13. Pythonのデコレータは、自己
- 14. Pythonデコレータのオプション引数
- 15. Python dlopen/dlfunc/dlsymラッパー
- 16. のPython Subversionのラッパー・ライブラリー
- 17. Pythonの画像検索ラッパー
- 18. ラッパー関数をPythonの
- 19. CコールバックへのPythonラッパー
- 20. Pythonの管理者のみデコレータ
- 21. デーモンpythonラッパー "サブプロセスI/Oタイムアウト"
- 22. Pythonの初心者@patchデコレータ問題
- 23. デコレータを使用したPythonのウォーキングパス
- 24. Pythonデコレータ@func()。属性の構文エラー
- 25. クラスOR関数用のPythonデコレータ
- 26. Google App EngineのPython関数デコレータ
- 27. デコレータ機構がクラスの場合、クラスメンバーのPythonデコレータが失敗する
- 28. Djangoコンテンツタイプとデコレータ
- 29. Django - デコレータとエラーメッセージ
- 30. デコレータとクラス
これはデコレータが行うことなので、関数を受け取り、新しい関数を返します。 [ドキュメント](https://www.python.org/dev/peps/pep-0318/)を読んだり、そこにあるPythonデコレータの何百もの説明を探していましたか? – BrenBarn
デコレータは基本的にそれを新しい関数にします(同じ引数をとります)。デコレータ自体は引数を知らないので、あなたの関数を呼び出す(評価する)のではありません。あなたが 'x()* 2'をデコレータの中に戻したいのであれば、' x() 'の引数は何でしょうか? – Evert
@brenbarnはい、私は最後の手段としてここに来たのです。あなたの誰かがそれを少しはっきりと説明してくれることを願っています。 –