新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
装饰器:用来修改函数功能的函数
专注于为中小企业提供成都网站建设、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业株洲免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
- 可以在不改变原函数的基础上添加功能
实现装饰器的方法:从函数中返回函数,将原函数作为一个参数传给另一个函数代码:装饰器pro_print在函数执行前输出提示"welcome to class"
def pro_print(fun): # 装饰器函数 def wrapper(*args,**kwargs): # 接收各种类型的不定长参数 print("welcome to class") fun() return wrapper @pro_print # 语法糖,在函数前使用用于装饰函数 def fun(): print('hello,python') fun()
但装饰器会覆盖原有函数的函数名,提示文档等信息
def pro_print(fun): # 装饰器函数 def wrapper(*args,**kwargs): # 接收各种类型的不定长参数 '''执行函数前提示welcom to class''' print("welcome to class") fun() return wrapper @pro_print # 语法糖,在函数前使用用于装饰函数 def fun(): '''输出hello,python''' print('hello,python') fun() print(fun.__name__) print(fun.__doc__)
测试结果:
导入functools中的wraps函数可以解决这个问题
from functools import wraps def pro_print(fun): # 装饰器函数 @wraps(fun) def wrapper(*args,**kwargs): # 接收各种类型的不定长参数 '''执行函数前提示welcom to class''' print("welcome to class") fun() return wrapper @pro_print # 语法糖,在函数前使用用于装饰函数 def fun(): '''输出hello,python''' print('hello,python') fun() print(fun.__name__)
测试结果:
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。