Python开发【第十三篇】装饰器

装饰器

什么是装饰器?python

​ 装饰器是一个函数,主要做用是用来给包装另外一个函数或者类函数

包装的目的是不改变原函数名(或类名)的状况下改变或添加被包装对象的功能code

函数装饰器

是指装饰器是一个函数,传入的是一个函数,返回的也是一个函数对象

语法:文档

def 装饰器函数名(参数):
    语句块
    return 函数对象
@张诗琪函数名
def 函数名(形参列表):
    语句块

示例:字符串

# 此示例示意装饰器函数的定义方式及装饰器来装饰另外一个函数
# 的语法

def mydeco(fn):
    def fx():
        print("++++++++++++++++")
        print('----------------')
    return fx

def myfunc():
    '''此函数将做为被装饰函数'''
    print("myfunc被调用")

# 原理是让myfunc从新绑定mydeco返回回来的函数
myfunc = mydeco(myfunc)

myfunc()
myfunc()
myfunc()
# 此示例示意装饰器函数的定义方式及装饰器来装饰另外一个函数
# 的语法

def mydeco(fn):
    def fx():
        print("++++++++++++++++")
        print('----------------')
    return fx

@mydeco
def myfunc():
    '''此函数将做为被装饰函数'''
    print("myfunc被调用")

# myfunc上的@mydeco 等同于在
# 此处加上 myfunc=mydeco(myfunc)

myfunc()
myfunc()
myfunc()
# 此示例示意装饰器函数的定义方式及装饰器来装饰另外一个函数
# 的语法

def mydeco(fn):
    def fx():
        print("++++++++++++++++")
        fn()  # 调用之前的被装饰函数
        print('----------------')
    return fx

@mydeco
def myfunc():
    '''此函数将做为被装饰函数'''
    print("myfunc被调用")

myfunc()
myfunc()
myfunc()
# 此示例示意装饰器的用途和做用
# 模拟银行项目
#    业务: 存钱和取钱
# ----- 小李如下小写写的装饰器-----
def privileged_check(fn):
    def fx(n, yuan):
        print("正在检查权限..... OK!")
        fn(n, yuan)  # 调用被装饰函数
    return fx

def send_message(fn):
    def fy(n, x):
        fn(n, x)
        print("正在发送给...", n)
    return fy

# ------
@privileged_check
def savemoney(name, x):
    print(name, '存钱', x, "元")

@privileged_check
@send_message
def withdraw(name, x):
    print(name, "取钱", x, "元")


# ----------
savemoney("小王", 200)
savemoney("小赵", 400)

withdraw("小钱", 500)

函数的文档字符串

函数内第一次末赋值给任何变量的字符串是此函数的文档字
符串it

语法:class

def 函数名(参数列表):
    '函数的文档字符串'
    语句块

示例:变量

def hello(name):
    '''这是一个向别人问好的函数
        name 绑定人的姓名
        '''
    pass

说明:
文档字符串一般用来讲明本函数的功能的使用方法
函数的文档字符串绑定在函数对象的__doc__ 属性上原理

函数的 doc 属性
__doc__属性用于绑定函数的文档字符串

函数定义语句的完整的语法: [@装饰器名1] [@装饰器名2] ... def 函数名([位置形参], [*元组形参], [命名关键字形参] ,[**字典形参]): '文档字符串' 语句块

相关文章
相关标签/搜索