python 嵌套函数、闭包装饰器、装饰器例子
来源:互联网 发布:做网站必备软件 编辑:程序博客网 时间:2024/04/26 08:12
十、python 嵌套函数、闭包装饰器、装饰器例子
python的函数可以嵌套定义
闭包:能够保留函数定义时的环境信息
嵌套函数的定义:
内部函数用到咯外部函数中的变量
外部函数返回内部函数
def outer():
def inner():
...
return inner
----------------------------------------------------------
#闭包,一定是嵌套函数(函数也是对象)
def f(x):
y = 100
def inner(z):
return x * y + z
return inner
a10 = f(10)
a20 = f(20)
print a10(29),a20(29)
------------------------------------------------
装饰器
不带参数装饰器:
decorator(f)(*args,**kwags)
@decorator
def f():
...
带参数装饰器:
decorator(name)(f)(*args,**kwags)
@decorator(name)
def f():
...
-----------------------------装饰器例子--------------------
-----------------------------日志装饰器----------------------------
import time
#想打印方法被调用的详细信息日志(开始时间、结束时间等)
def f(x,y):
return x+y
def f1(x,y):
print 'calling f2',x,y
start = time.clock()
z = x+y #相当于把方法中的业务拿下来,修改很麻烦,难适合任意函数
end = time.clock()
print 'start at:',start,'end at:',end
return z
print f(10,20)
print f1(10,20)
#使用装饰器来做。装饰器是用闭包来做的
def log(func): #func是被装饰函数的名称。无参数的装饰器
def wrapper(*args, **kwargs): #装饰器要适用所有的函数所以参数定义用任意的
print '~' * 40
start = time.clock()
res = func(*args,**kwargs)
end = time.clock()
print 'calling', func.__name__
print 'start at:',start,' end at:',end
return res
return wrapper
def logEx(name): ##带参数的装饰器,三层嵌套。
def wrapper(func):
def wrapper1(*args,**kwargs):
print '~' * 40
start = time.clock()
res = func(*args, **kwargs)
end = time.clock()
print name, ' calling ', func.__name__, args
print 'start at:', start, ' end at:', end
return res
return wrapper1
return wrapper
@log #装饰器一定要在使用函数之前调用;同时这个是不带参数的装饰器
def f(x,y):
return x+y
@logEx('aidon')
def f2(x,y):
return x*y
print f(20,30)
print f2(20,30)
---------------------------------------------------------------
-------------------------------------------------
##身份认证装饰器
def authorize(func):
def wrapper(*args,**kwargs):
if True:
print 'welcome'
return func(*args,**kwargs)
else:
print 'faild'
return wrapper
@logEx('aidon')
@authorize
def f2(x,y):
return x*y
print f2(20,30)
---------------------------------------------------
- python 嵌套函数、闭包装饰器、装饰器例子
- python 嵌套函数->闭包->装饰器
- python闭包函数和装饰器
- python 装饰器例子
- python闭包,装饰器
- python 闭包&装饰器
- python--闭包,装饰器
- python闭包和装饰器的例子
- python 使用函数装饰器的例子
- Python 返回函数_闭包_装饰器
- python 的内置函数,闭包,以及装饰器
- Python闭包、函数式编程、装饰器深入理解
- Python函数的作用域、闭包、装饰器
- python之闭包函数 装饰器 练习
- python[变量作用域-函数-闭包-装饰器-生成器]
- PYTHON 函数装饰器
- python 函数装饰器
- Python函数:装饰器
- Spring MVC流程图
- RK3368评测 RK3368方案 RK3368方案设计 RK3368性能如何 RK3368设计定制
- linux 多线程安全定时器
- 题目891-找点
- 2017.08.16工作日记
- python 嵌套函数、闭包装饰器、装饰器例子
- Scala基础入门(九)Scala 方法中缀表示法、后缀表示法
- 2017 Multi-University Training Contest
- mysql分库分表
- python 迭代器和生成器及例子
- 菜鸟的myeclipse快捷之路
- python 经典类和新式类
- Ajax简单解析
- python显示图片