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')

 

转载于:https://www.cnblogs.com/hellojackyleon/p/9689692.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值