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