この記事は主に、Python デコレータの関連情報を簡単かつ詳細に学習するためのものです。興味のある友人は参考にしてください。サーフェスに慣れていないので、その呼び出し方法に混乱していました。現在のプロジェクトを最適化したいと考えたので、デコレーターについて詳しく調べてみましょう。まずはコードです:
import time # 将函数作为参数传入到此方法.... def timeif(func): def wrapper(arg): print("in wrapper() %s" % (arg)) start = time.clock() func(arg) end = time.clock() print("used: %s %s" % (end-start, arg)) return wrapper @timeif def foo(arg): print("in foo() %s" % (arg)) if __name__ == '__main__': foo(" Hello ") # 表示执行foo函数....私の疑問は、戻り値が明らかであるかどうかです。論理的に言えば、関数名は関数アドレスを返します。私の理解に何か間違いがありますか?そこでネットで情報を調べたら、また閉鎖になってしまった…。 そこで、自分で分析してプログラムをまとめてみました。
プログラム:
# coding=utf-8 # 带参数的函数 返回一个函数地址就行.... def funX(x): def funY(): return x return funY # 不带参数的函数.... def funX1(): print("调用函数funX1") def funY1(): print("调用函数funY1") return funY1 if __name__ == '__main__': # print(funX(5)()) # 调用有参数的嵌套函数... print(funX1()()) # 调用无参数的嵌套函数...これと私たちのデコレーターは似ていませんか?これが私たちのデコレーターです!したがって、上記のプログラムに従って理解することができます。つまり、最初にパラメーターの数を決定し、それからそれらを個別に渡します。次に、コードを書き直してみましょう。
以上がPythonデコレータの徹底解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。