python 闭包与装饰器
Posted 山外云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\')
以上是关于python 闭包与装饰器的主要内容,如果未能解决你的问题,请参考以下文章