Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime
- def now():
- print(datetime.datetime.now())
- f = now()
- f
- #装饰器
- def log(func):
- def wrapper(*args,**kwargs):
- print("call : {0}".format(func.__name__))
- return func(*args,**kwargs)
- print(id(wrapper))
- return wrapper
- @log
- def now2():
- print(datetime.datetime.now())
- print(id(now2))
- print(now2.__name__)
- print('-'*50)
- print(now2.__name__)
- #相当于now2 = log(now2)
- #此时now2函数被当做参数传递到log函数,然后执行wrapper函数
- #先打印一句话,然后返回now2函数里的内容
- #将以上的返回结果作为wrapper的返回值,返回wrapper
- now2()
- #注意观察,原来的now2函数和wrapper函数id竟然相同,也就是说,在log装饰器的装饰下
- #原来的now2()依然存在,但是同名的now2变量指向了装饰器log里的wrapper函数
- #没错,确实,此时now2的函数名为wrapper,就算在执行now2()函数前,函数名依然是wrapper
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement