1.関数デコレータとは何ですか?
デコレータ(デコレータ)はPythonの重要な部分です。
簡単に言えば:彼らは他の関数の機能的能力を変更している、彼らはファンたちのコードが短く、もっと作るのを助けます!
言うことができます:関数やクラスの機能を高めるためには文法的な機能拡張です。女の子のメイクなど、女の子か、その少女のように、しかし、メイクはもっと美しいです後〜
0002コード:
まず、基本的な関数を宣言し、その関数を呼び出します。
#基本機能の宣言 DEFのTEST1(): 印刷(「私は基本的な機能だ」) #は関数コール )(TEST1を
出力を実行した後: 私は基本的な機能です
私たちは、前と後に、この基本的な機能出力の機能のいくつかを追加する必要があります。
#基本機能の宣言 DEFのテスト(): 印刷(「私は基本的な機能だ」) #は機能的能力を高めるために与えられたテスト関数を定義 DEF 関数func2(FUNC): #の追加機能を 印刷する(「私は能力の増加でした」) #あなたが基本的な機能を呼び出す必要があれば、私たちは基本的な機能はfunc2のにパラメータとして渡される必要があるここでは、初等関数を呼び出す FUNC() #のテスト関数呼び出しと同じ #の2増加関数を 印刷する(「私は機能2を追加」) #基本関数func2は関数へのパラメータとして渡され、コール関数func2の 関数func2(試験)
出力が実行されます: 私は、機能を追加しました
私は基本的な機能であります
私は2つの機能を追加しました
私たちは、関数を定義TSET関数に渡し、そのfunc2の中の関数で定義された機能に戻す必要があるので、しかし、これは我々が実行増加した機能の関数であり、我々は、最も基本的な機能テスト開始ではありません。
サイードは、ビットは、私たちが理解するためのコードを見て、混乱することができます
#基本機能の宣言 DEFの)(テスト: 印刷(「私は基本的な機能だ」) #は機能的な能力を高めるために与えられたテスト関数を定義 DEF 関数func2(FUNC): DEFのinfunc(): #の追加機能 印刷(" I機能aを増加「) #ここでは、初等関数を呼び出しますが、基本的な関数を呼び出す必要があれば、私たちは基本的な機能はfunc2のにパラメータとして渡される必要がある FUNC() #のテスト関数呼び出しと同じ #の2増加関数を 印刷する(」私は機能2を高めています" ) #ここinfuncが(追加することはできません)、プラス(後)関数呼び出しinfuncのとなり #返す関数、ここでは関数が返す私たちは基本的な機能を持っている機能を追加し、より良い未来を機能することでも機能が増えてきてい リターンinfunc #装飾運転 テスト= func2の(テスト) #テストコール装飾的な機能の後に テストを()
結果:私は機能を追加しました
私は基本的な機能であります
私は2つの機能を追加しました
これは、我々はそれを特色にしたいものです!これもあるデコレータの原則が、我々は、書き込みにデコレータ構文を使用する必要があります。
装飾操作を理解していない一部の人があるかもしれません:テスト=ここに関数func2(テスト)関数func2(テスト)が返された値は、次のコードのように、あなた自身をダウンを実行することができ、infuncの関数であります:
DEF 試験(): 印刷(' こんにちは、Pythonの' ) FUNC = 試験 FUNC()
デコレータ構文で上記の関数を記述します
#関数function機能をテストするために増加定義 DEFの:関数func2(FUNC) DEFのinfunc(): #の追加機能 印刷(「Iが増加した機能のAよ」) #ここでは初等関数を呼び出すと、あなたは基本的な機能を呼び出すために必要がある場合は、私たちに必要なの基本的な機能は、関数func2にパラメータとして渡さ FUNC() #のテスト関数呼び出しと同じ #の2増加関数を 印刷する(「私は機能2を追加」) #)ここでは、infunc缶(追加しないで、それに加えて(後)infunc呼び出すことになります機能 #は関数を返す、ここでは関数が戻るが、我々はまた、機能の増加の機能を持っている基本的な機能を持っている機能を追加するためのより良い未来に機能していることである リターンinfuncの #装飾操作を @関数func2 #同等=がテスト関数func2(テスト) #は、基本的に宣言しました機能 DEFのテスト(): 印刷(「私は基本的な機能だ」) #テストコール装飾的な機能の後の テスト()
結果:私は機能を追加しました
私は基本的な機能であります
私は2つの機能を追加しました