加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python:装饰器进阶

发布时间:2020-12-17 00:00:35 所属栏目:Python 来源:网络整理
导读:1、wraps functools wrapper(func): @wraps(func) inner(*args,** ( = func(*args,** ( @wrapper span style="color: #008000"# span style="color: #008000"holiday = wrapper(holiday) span style="color: #0000ff"def span style="color: #000000" holida
1、wraps
functools wrapper(func): @wraps(func) inner(*args,**(= func(*args,**(@wrapper <span style="color: #008000">#<span style="color: #008000">holiday = wrapper(holiday)
<span style="color: #0000ff">def
<span style="color: #000000"> holiday(day):
<span style="color: #800000">'''
<span style="color: #800000">这是一个放假通知
<span style="color: #800000">'''

<span style="color: #0000ff">print
(<span style="color: #800000">'
<span style="color: #800000">全体放假%s天
<span style="color: #800000">'
%<span style="color: #000000">day)
<span style="color: #0000ff">return
<span style="color: #800000">'
<span style="color: #800000">好开心
<span style="color: #800000">'

<span style="color: #0000ff">print(holiday.<span style="color: #800080">name<span style="color: #000000">)
<span style="color: #0000ff">print(holiday.<span style="color: #800080">doc<span style="color: #000000">)
ret = holiday(3) <span style="color: #008000">#<span style="color: #008000">inner
<span style="color: #0000ff">print<span style="color: #000000">(ret)

<span style="color: #008000">#<span style="color: #008000"> def wahaha():<span style="color: #008000">

<span style="color: #008000"> '''<span style="color: #008000">

<span style="color: #008000"> 一个打印娃哈哈的函数<span style="color: #008000">

<span style="color: #008000"> :return:<span style="color: #008000">

<span style="color: #008000"> '''<span style="color: #008000">

<span style="color: #008000"> print('娃哈哈')

<span style="color: #008000">#<span style="color: #008000"> print(wahaha.name) #查看字符串格式的函数名<span style="color: #008000">

<span style="color: #008000"> print(wahaha.doc) #document。查看函数的注释内容

2、带参数的装饰器
= inner(*args,**===func(*args,**=(end-=func(*args,** #func1 = timmer(func1) 0.1()

3,多个装饰器装饰一个函数

(=(<span style="color: #0000ff">def<span style="color: #000000"> wrapper2(func):
<span style="color: #0000ff">def
<span style="color: #000000"> inner2():
<span style="color: #0000ff">print
(<span style="color: #800000">'
<span style="color: #800000">wrapper2,before func
<span style="color: #800000">'
<span style="color: #000000">)
ret
=<span style="color: #000000"> func()
<span style="color: #0000ff">print
(<span style="color: #800000">'
<span style="color: #800000">wrapper2,after func
<span style="color: #800000">'
<span style="color: #000000">)
<span style="color: #0000ff">return
<span style="color: #000000"> ret
<span style="color: #0000ff">return
<span style="color: #000000"> inner2

<span style="color: #0000ff">def<span style="color: #000000"> wrapper3(func):
<span style="color: #0000ff">def<span style="color: #000000"> inner3():
<span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">wrapper3,before func<span style="color: #800000">'<span style="color: #000000">)
ret =<span style="color: #000000"> func()
<span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">wrapper3,after func<span style="color: #800000">'<span style="color: #000000">)
<span style="color: #0000ff">return<span style="color: #000000"> ret
<span style="color: #0000ff">return<span style="color: #000000"> inner3

@wrapper3
@wrapper2
@wrapper1
<span style="color: #0000ff">def<span style="color: #000000"> f():
<span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">in f<span style="color: #800000">'<span style="color: #000000">)
<span style="color: #0000ff">return <span style="color: #800000">'<span style="color: #800000">哈哈哈<span style="color: #800000">'

<span style="color: #0000ff">print(f())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读