码迷,mamicode.com
首页 > 其他好文 > 详细

装饰器升级版

时间:2018-09-27 18:45:11      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:tar   star   地址   art   内存地址   alt   解释器   original   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)

装饰器升级版

标签:tar   star   地址   art   内存地址   alt   解释器   original   com   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!