人工智能(python)开发 —— 装饰器 decorators(提高篇)


装饰器 decorators(专业提高篇)

1、装饰器的定义
        装饰器是一个函数,主要作用是用来包装另一个函数或类
2、作用
        在不改变原函数名(或类名)的情况下改变被包装对象的行为
3、函数装饰器的定义
        函数装饰器是指装饰器是一个函数,传入的是一个函数,返回的也是一个函数
4、语法
        def 装饰器函数名(参数):
                语句块
                return 函数对象

        @装饰器函数名<换行>
        def 函数名(形参列表):
                语句块

5、示例

def mydeco(fn):
    def fx():
        print("fx函数被调用")
    return fx

# myfunc加了mydeco装饰器,等同于在myfunc创建之后调用
# myfunc = mydeco(myfunc)
@mydeco
def myfunc():
    print("函数myfunc被调用")

# 这样的写法可以用装饰器来代替
# 等同于
#   @mydeco
#   def myfunc()....

# myfunc = mydeco(myfunc)

myfunc()
注:装饰器只调用一次,后面再次调用就是调用的返回的函数


被装饰函数带有参数的装饰器

def msg_service(fn):
    print("装饰器函数被调用,并返回 原函数/修改后的功能(闭包)")
    def savemoney2(name,x):
        print("欢迎",name,"来银行,请取号!!!")
        fn(name,x)
        print(name,"办理了存",x,"元钱的业务,短信发送中")
    return  savemoney2 

@msg_service
def savemoney(name,x):
    print(name,"存钱",x,"元")

savemoney("小张",200)
savemoney("小灶",500)    
注:
        用到了闭包

       可用于计算/测试程序运行的时间


附录

        人工智能(python)—— 目录汇总


你可能感兴趣的:(人工智能,Python3)