Python开发【第十三篇】装饰器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python开发【第十三篇】装饰器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2226字,纯文字阅读大概需要4分钟。
内容图文
![Python开发【第十三篇】装饰器](/upload/InfoBanner/zyjiaocheng/666/f4dfd1b228b24bdfacbeac8a3a242d68.jpg)
装饰器
什么是装饰器?
? 装饰器是一个函数,主要作用是用来给包装另一个函数或者类
包装的目的是不改变原函数名(或类名)的情况下改变或添加被包装对象的功能
函数装饰器
是指装饰器是一个函数,传入的是一个函数,返回的也是一个函数
语法:
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)
函数的文档字符串
函数内第一次末赋值给任何变量的字符串是此函数的文档字
符串
语法:
def 函数名(参数列表):
'函数的文档字符串'
语句块
示例:
def hello(name):
'''这是一个向别人问好的函数
name 绑定人的姓名
'''
pass
说明:
文档字符串通常用来说明本函数的功能的使用方法
函数的文档字符串绑定在函数对象的__doc__ 属性上
函数的 doc 属性
__doc__属性用于绑定函数的文档字符串
函数定义语句的完整的语法:
[@装饰器名1]
[@装饰器名2]
...
def 函数名([位置形参], [*元组形参], [命名关键字形参]
,[**字典形参]):
'文档字符串'
语句块
内容总结
以上是互联网集市为您收集整理的Python开发【第十三篇】装饰器全部内容,希望文章能够帮你解决Python开发【第十三篇】装饰器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。