Pythonのデコレータはそれらの事、「パラメータ」のについて話をします。

私は、Pythonのデコレータに必要な知識と彼らの最も基本的な概念を学ぶ導入しました。それはそれは長さが既に十分な長さで、多くに関与してきた知識と考えられたため、根本的な存在しないことを基本的な知識であるので、よりご理解くださいますに影響を与えるにバインド書きます。だから、あなたが前に見ていない場合は勧告を読み、記事を書くためにこの日に残っている人たちの残りの部分はヨ戻ってきます。

00関数のパラメータを取得

最後の最後で、私は、デコレータの例を書きました。便宜上、私はあなたにそれを引き継ぎました。

私は、以下の手順が正常であると呼び出されたときに次の我々が使用しての過程では、上記で定義されたStackクラスの使用を見て、私は、非常に奇妙なことを見つけました:

 

私は次のことを呼びたいときや、プログラムはエラーになります。

あなたは、私たちが理解するように、「キーワード引数」を「位置パラメータが」位置しています注文パラメータにマッチされる名前にマッチした、とされているので、質問「これは間違っているとどのようにある」生成することがあり、これは場合、管理者は明らかであるため、なぜあなたは間違って行くと、ユーザー名変数に着ますか?

実際に、我々は上記を疑う理由は問題ではありません、問題は、私たちのデコレータ質問が書かれているということです。問題は、デコレータを渡されたパラメータに表示されています

このデコレータをcheck_adminでは、私は、ユーザー名値のkwargs.getから直接取得します。最初は、私は渡されたユーザ名のキーワード引数を使用しているため、我々は位置パラメータでユーザ名を渡すので、その後、変数と値のユーザ名がkwargsからで、2番目のエラーがあるはずですし、ユーザ名の値は引数に現れる正しいです。

だから、新しい質問は、私たちがコントロールできないこと、そしてこの問題は、それを解決する方法でなければならないことに関係なく、位置パラメータやキーワードパラメータの、使用者として、右されているのですか?Pythonは言った:「使用は  モジュールを検査します。」この問題を解決することができGetcallargsは、それが機能のすべてのパラメータを保持している辞書を返します。プラスダウン私たちはどのような変化を参照してください。

 

パラメータを持つ01.デコレータ

在我们之前熟知的装饰器语法中,外层函数的参数是被装饰的函数,内层函数的参数是被装饰的函数的参数。但是有些时候我们想针对不同的函数装饰器有些变化怎么办,即给装饰器后面带上相应的参数。

比如有个针对加和减的装饰器如下所示:

 

但这个时候我想做点改变,想把函数的名字也给打出来,这个时候我们装饰器肯定就是要带上参数了,参数传的就是函数的名字,这个时候我们该怎么办?其实也简单的很,那就再嵌套一层函数呗。具体如下所示:

其实这么来看,装饰器写起来还是套路满满呢。

今天就到这里就结束啦,不知道你学会了没呢?

おすすめ

転載: blog.csdn.net/sinat_38682860/article/details/94762827