• python 闭包与装饰器


    1、闭包--返回子函数名

    作用:使用子函数之外的父函数的变量

    闭包就是你调用了一个函数a,这个函数a反悔了一个子函数名b,这个返回的函数b就叫做闭包

    代码举例

    def a():
        test = 'aa'
        def b():
            print(test)
            return 1
        return b
    
    c = a()
    print(c)
    print(c())

     统计做一件事情所需要的时间

     做一批事情都想统计时间,如何做  装饰器=闭包+函数式编程

    import time
    
    def deco(func):
        def _deco(*args,**kwargs):
            before = time.time()
            ret = func(*args,**kwargs)
            print('cost time : %s' %(time.time() - before))
            return ret
        return _deco
    
    @deco  @装饰器写法
    def do_something():
        time.sleep(3)
        print('done')
    
    do_something()

    装饰器就是把函数(类)包装一下,为函数(类)添加一些附加的功能

    装饰器就是一个函数,参数为函数名(类),返回包装后的函数名

    装饰就是参数为函数名字的闭包

    装饰器 = 闭包 + 函数式编程

    #coding:utf-8
    
    def deco(func):
        def _deco():
            print('屌丝: 我有一辆法拉利跑车')
            func()
            print('屌丝: 我北京有一套别墅')
        return _deco
    
    @deco
    def confression():
        print('屌丝: 女神 I love you ,will you merry me?')
    
    def accept():
        print('女神: 讨厌,人家愿意了')
    
    confression()
    accept()

     

    #coding:gbk
    import time
    def calc_time(func):
    
        def calc(*args,**kwargs):
            begin_time = time.time()
            ret = func(*args,**kwargs)
            print('huafei time: % second' %(time.time() - begin_time))
        return calc
    
    @calc_time
    def eat_bf():
        time.sleep(5)
    # t = calc_time(eat_bf)
    # t()
    eat_bf()
    
    def watch_movie(movie_name):
        print('movie name: %s' % movie_name)
        time.sleep(4)
    w = calc_time(watch_movie)
    w('gumuliying')

  • 相关阅读:
    strcspn()函数
    makfile通用版本
    C实现简单的xml格式文件
    shell编程题(七)
    C语言实现五子棋
    打字软件(最终版本)
    TypeWriting
    KMP 串的模式匹配 (25分)
    C链表操作
    Ubuntu终端字体
  • 原文地址:https://www.cnblogs.com/hellojackyleon/p/9689692.html
Copyright © 2020-2023  润新知