데코레이터에 대해 이전에 배운 적이 있지만, 겉모습만 보고 어떻게 불러야 할지 헷갈릴 뿐입니다. 그냥 현재 프로젝트를 최적화하고 싶어서 데코레이터를 사용해볼까 해서 심도 있게 공부하게 되었어요.
먼저 살펴보겠습니다. 코드:
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 @timeifdef 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 funY1if __name__ == '__main__': # print(funX(5)()) # 调用有参数的嵌套函数... print(funX1()()) # 调用无参数的嵌套函数...
이거 우리 데코레이터랑 비슷하지 않나요? 이것은 우리의 데코레이터입니다! 따라서 위 프로그램에 따라 이해할 수 있습니다. 즉, 먼저 매개변수 수를 결정한 다음 별도로 전달한다는 의미입니다. 다음으로 코드를 다시 작성해 보겠습니다.
위 내용은 파이썬 데코레이터의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!