装饰器升级版

Posted outofcontrol

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器升级版相关的知识,希望对你有一定的参考价值。

# _*_ 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)






















































以上是关于装饰器升级版的主要内容,如果未能解决你的问题,请参考以下文章

react---react中使用装饰器(高阶组件的升级用法)

python之装饰器

python装饰器

python3 装饰器

python装饰器

python装饰器