黑马程序员技术交流社区

标题: 【上海校区】装饰器 [打印本页]

作者: 梦缠绕的时候    时间: 2019-1-16 10:39
标题: 【上海校区】装饰器
作用

用函数修饰另外一个函数,扩展另外一个已存在函数的功能

装饰器不修改源代码不修改调用方式还能增加新功能

语法就是原函数之前加@ 在开发时,装饰器写在被装饰函数之上

import time

def info(func):

def time_h():

begin_time=time.time()

func()

print(time.time()-begin_time)

return time_h

@info

def download():

print("开始下载")

time.sleep(3)

print("success")

@info

def upload():

print("shangchuan")

time.sleep(2)

print("success")

download()

upload()



无参装饰器

import time

def rongkji(fun):

def ti(*args,**kwargs):

be=time.time()

a=fun(*args,**kwargs)

print(time.time()-be)

return a

return ti

@rongkji

def xiazai(file):

print(file)

time.sleep(2)

print("sad")

return True

@rongkji

def upload():

print("suu")

time.sleep(2)

print("asdaf")

print(xiazai("apple"))



有参装饰器

def outer(locatin):

def logger(func):

def warpper(*args,**kwargs):

if locatin == "cmd":

print("时间:%s,%s" % (time.time(), func.__name__))

elif locatin == "file":

with open("a.log", "a", encoding="utf-8") as f:

f.write("时间:%s,%s" % (time.time(), func.__name__))

else:

print("error")

return func(*args,**kwargs)

return warpper

return logger

@outer("cmd")

def testrun():

print("test run")

testrun()



作者: 不二晨    时间: 2019-1-17 15:44
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2