国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python高级 > 一个例子解释python装饰器

一个例子解释python装饰器

头像

silencement

2019-07-13 15:25:523025浏览 · 0收藏 · 0评论

谈到python装饰器,一般都先提到函数式编程,但是其实运用python装饰器,和知不知道他是函数式编程没啥关系。

例子

def decorator(func):
    def wrapper(*args, **kwargs):
        print('我是装饰器呦')
        return  func(*args, **kwargs)
    return wrapper
    
@decorator
def test():
    print('我是test')
    
test()

输出如下

我是装饰器呦
我是test

其实就这么简单,完全可以把代码里的@理解为我们聊天中用的@,在调用某一个函数的时候@你想调用的装饰器函数,然后就可以在函数自身代码不变的情况下、增添一些具有普适性的功能。

应用

那么装饰器能做什么呢?最简单的一个应用,计算函数运行时间啊。

import time

def run_time(func):
    def wrapper(*args, **kw):
        t = time.time()
        ans = func(*args, **kw)
        t = time.time() - t
        return ans, t
    return wrapper
    
@run_time
def test():
    x=1
    for i in range(10 ** 6):
        x += 1
    return x
    
test()

输出如下

(1000001, 0.08555388450622559)

当然,装饰器的应用不止如此,它还可以传递参数,著名的用法比如web框架flask的路由配置,有兴趣可以阅读一下它的源码,很漂亮。

所需基础

为了彻底理解装饰器,有两个基础知识要巩固一下。一个是闭包函数,一个是可变参数。

补充

我们给上面的装饰器加一个参数:

import time

def run_time(text):
    def decorator(func):
        def wrapper(*args, **kwargs):
            t = time.time()
            ans = func(*args, **kwargs)
            t = time.time() - t
            if t>text:
                return ans, '太慢'
            else:
                return ans, '正常'    
        return wrapper
    return decorator
    
@run_time(1)
def test():
    x=1
    for i in range(10 ** 6):
        x += 1
    return x
    
test( )
关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

粘液共生1-3集免费观看动漫| 免费观看已满十八岁电视剧国外| 《不戴套瑜伽教练3》| 妈妈醉酒后把我当爸爸电视剧 | 禁忌1| 《相濡以沫的夜晚》动漫免费观看| 玉女献身台湾1988版主演是谁| 《熟妇的荡欲》免费看| 许允美| 半夜洗澡被老头添一夜| 男同桌硬了把我内裤也脱了| CSGO2开箱网站| MISSAV| 黑料| 新加坡疫情| 玩隐私位置游戏| 荒井小姐的秘密生活日剧免费观看| 比白洁还牛的四大书| 女被扒开腿狂躁xXXXX| 100张美女光溜溜的背景图片| 露全胸衣服| 舌头伸进去添的我爽高潮| 《玉尺经》| 《与上司做爰HD》| WWW.77.GOV.CN| 欧美| 糖心| 情满四合院免费观看全集电视剧| 机械师是什么牌子旗下的电脑| 儿媳妇长太漂亮免费观看电视剧| 儿子耕种母亲的田地的收获| 韩国电影片| 第1章品尝朋友娇妻| 狗配人的大片视频大全| 《无能的丈夫》完整版| 打扑牌不盖被子怎么办| 日剧韩剧在线观看免费全集| 女子蹲坑排尿全过程| 为啥越骚的女人干的越爽| 人妻熟妇乱又伦精品视频APP| 初中小姐姐脚丫踩在男生困困