装饰器
代码的封闭开放原则: 不能对源代码进行修改,可以对代码进行扩展
# -*-coding:utf-8 -*-
__date__ = '2018/2/26'
__author__ = 'xiaojiaxin'
__file_name__ = 'test'
def foo():
return 1
def fun(f):
f()
return f
fun(foo) #高阶函数执行
print(fun(foo)) # 打印函数地址
print(foo) # 打印函数地址
# <function foo at 0x000000A2C70AD158>
# <function foo at 0x000000A2C70AD158>
print(foo()) #执行函数,将函数的值打印出来
#1
print(abs) #函数名也是变量,输入变量名
# <built-in function abs>
# -*-coding:utf-8 -*-
__date__ = '2018/2/26 '
__author__ = 'xiaojiaxin'
__file_name__ = 'decorator'
import time
def show_time(f):
def inner():
start_time=time.time()
time.sleep(1)
f()
end_time=time.time()
print(end_time-start_time)
return inner
def foo():
print("foo...")
show_time(foo())#这个是执行foo()函数,foo()函数没有返回值,show_time()没有输入参数
# foo...
show_time(foo)
#无输出
print(show_time(foo)) #打印foo函数所在的内存地址
# <function show_time.<locals>.inner at 0x0000005AA688D268>
foo=show_time(foo)
foo()
# foo...
# 1.0006678104400635
# foo=show_time(foo)
# foo()
@show_time
def bar():
print("bar...")
bar()
# bar...
# 1.000669240951538
# @show_time 等价于 bar=showtime(bar)
大家对内容有任何问题,欢迎留言,定在第一时间解答,谢谢大家!