首页 > 其他 > 详细

装饰器升级版

时间:2018-09-27 18:33:37      阅读:187      评论:0      收藏:0      [点我收藏+]
# _*_ coding: utf-8 _*_

# 如何取得home的返回值0000

import time
# 调用在python解释器中内置的time函数

# 原函数 不能改变
def original():
print(‘Original function‘)
time.sleep(1)


# 原函数 不能改变
def home(name):
print(‘Welcome %s to home page‘ % name)
time.sleep(1)
return 8888
# 返回单个值 就是值本身
# print(home(‘oOC‘))


def external(original_func):
# original_func = (old)home函数的内存地址
def alter(*args, **kwargs):
# *args, **kwargs 为了接收输入的任何类型的值
start = time.time()
res = original_func(*args, **kwargs)
# original_func = (old)home(*args, **kwargs)
# home有返回值是8888(返回单个值 就是值本身)
# res = 函数运行的结果和返回值
stop = time.time()

print(‘Run time is %s‘ % (stop - start))
return res
# 返回 res的内存地址绑定了的值
# res = original_func = (old)home(*args, **kwargs)
# 可以理解为返回了 res的值

return alter
# 返回alter函数的内存地址
# 返回整个alter 整个函数给了external
# 返回alter 之后相当于把 external()和alter()单独取出来运行结果一样


# original()
# 输出Original function
original= external(original)
original()
home = external(home)
# external(original_func)-----> original_func = home函数的内存地址
# (new)home = (original_func = (old)home函数的内存地址)
res = home(‘oOC‘)
# res = (new)home(‘oOC‘)= external(original_func = (old)home函数的内存地址)
print(res)

装饰器升级版

原文:https://www.cnblogs.com/OutOfControl/p/9714823.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!