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. pythonデコレータとラッパー関数debug
- 2. コンパイル時の関数デコレータ(ラッパー)
- 3. Python:try/except文のデコレータ/ラッパー
- 4. デコレータをラッパーとして使用する
- 5. デコレータでラッパーを使用する理由、ラッパーなしでデコレータを作成できるのはなぜですか?
- 6. Pythonのデコレータ - クラス
- 7. マルチスレッドのPythonデコレータ
- 8. デコレータのpython
- 9. Python-Flaskのデコレータ
- 10. オブザーバーとデコレータは、私はプログラムがデコレータ/ラッパーとして飲料を行いコーヒーハウスのthats持っ++ * *
- 11. pythonの複数のデコレータは、私はPythonのデコレータを理解しようと
- 12. __setattr__クラスのデコレータのpython
- 13. ユニットテストのモックPythonデコレータ
- 14. Python memoizationデコレータ
- 15. Python:デコレータ内のラッパーとしてローカル関数の代わりに呼び出し可能オブジェクトを使用する
- 16. C++ Pythonラッパーのメモリリーク
- 17. Python Decorator 3.0とデコレータへの引数
- 18. クラスメソッドと静的メソッドのpythonデコレータ?
- 19. JavaのPython風のデコレータ?
- 20. Pythonクラスのデコレータの引数
- 21. Pythonデコレータのオプション引数
- 22. Pythonデコレータ関数の実行
- 23. Pythonデコレータのエラー処理
- 24. Pythonのデコレータは、自己
- 25. Pythonクラスの内部デコレータ
- 26. デコレータのPython命名規則
- 27. パラメータ付きのPython 2.6デコレータ
- 28. Python dlopen/dlfunc/dlsymラッパー
- 29. `plotnine`のKeyError(pythonのggplotラッパー)
- 30. のPython Subversionのラッパー・ライブラリー
これはデコレータが行うことなので、関数を受け取り、新しい関数を返します。 [ドキュメント](https://www.python.org/dev/peps/pep-0318/)を読んだり、そこにあるPythonデコレータの何百もの説明を探していましたか? – BrenBarn
デコレータは基本的にそれを新しい関数にします(同じ引数をとります)。デコレータ自体は引数を知らないので、あなたの関数を呼び出す(評価する)のではありません。あなたが 'x()* 2'をデコレータの中に戻したいのであれば、' x() 'の引数は何でしょうか? – Evert
@brenbarnはい、私は最後の手段としてここに来たのです。あなたの誰かがそれを少しはっきりと説明してくれることを願っています。 –