Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. import datetime
  2. def now():
  3. print(datetime.datetime.now())
  4. f = now()
  5. f
  6. #装饰器
  7. def log(func):
  8. def wrapper(*args,**kwargs):
  9. print("call : {0}".format(func.__name__))
  10. return func(*args,**kwargs)
  11. print(id(wrapper))
  12. return wrapper
  13.  
  14. @log
  15. def now2():
  16. print(datetime.datetime.now())
  17. print(id(now2))
  18. print(now2.__name__)
  19. print('-'*50)
  20. print(now2.__name__)
  21. #相当于now2 = log(now2)
  22. #此时now2函数被当做参数传递到log函数,然后执行wrapper函数
  23. #先打印一句话,然后返回now2函数里的内容
  24. #将以上的返回结果作为wrapper的返回值,返回wrapper
  25.  
  26. now2()
  27.  
  28.  
  29. #注意观察,原来的now2函数和wrapper函数id竟然相同,也就是说,在log装饰器的装饰下
  30. #原来的now2()依然存在,但是同名的now2变量指向了装饰器log里的wrapper函数
  31. #没错,确实,此时now2的函数名为wrapper,就算在执行now2()函数前,函数名依然是wrapper
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement