PYTHON 函数装饰器
来源:互联网 发布:休闲食品淘宝店铺运营 编辑:程序博客网 时间:2024/05/05 20:09
装饰器其实也就是一个函数,一个用来包装函数的函数,参数为被包装的函数,装饰器在函数申明完成的时候被调用,调用之后申明的函数被换成一个被装饰器装饰过后的函数。
示例一:被包装函数就可接收任意形式的参数
#coding:utf-8:
from time import ctime,sleep
def main():
for i in range(4):
sleep(1)
myList = func(i)
print myList
def decofunc(fp):
def _d(*arg, **karg):
print "do sth before fp.."
r= fp(*arg, **karg)
print "do sth after fp.."
return r
return _d
@decofunc
def func(n):
return [x **2 for x in range(n)]
if __name__ == '__main__':
main()
执行后输出结果为:
>>>
do sth before fp..
do sth after fp..
[]
do sth before fp..
do sth after fp..
[0]
do sth before fp..
do sth after fp..
[0, 1]
do sth before fp..
do sth after fp..
[0, 1, 4]
>>>
示例二:装饰器带参数:再包装一层
#coding:utf-8:
def main():
f()
print "-"*20
f2(1)
print "-"*20
f2(a=1,b=4)
def d(a):
def _d(fp):
def __d(*arg, **karg):
print a
print "do sth before fp.."
r= fp(*arg, **karg)
print "do sth after fp.."
return r
return __d
return _d
@d("haha")
def f():
print "call f"
@d("hehe")
def f2(a, b=2):
print "call f2"
print a+b
if __name__ == '__main__':
main()
执行结果如下:
>>>
haha
do sth before fp..
call f
do sth after fp..
--------------------
hehe
do sth before fp..
call f2
3
do sth after fp..
--------------------
hehe
do sth before fp..
call f2
5
do sth after fp..
>>>
转载自 http://zhidao.baidu.com/link?url=3sJPRqkECozDZ9ROT5uB-_2C-pucr_e9_Uo9ugpUII7_gaiaWbj5xFv7L3nhC_pD_099VuXzV_nIrrTXNth4xa
- PYTHON 函数装饰器
- python 函数装饰器
- Python函数:装饰器
- Python 函数装饰器
- python函数装饰器
- python函数装饰器
- python 装饰器函数
- Python 函数装饰器探讨
- python函数之一 装饰器
- python 函数装饰器学习
- Python中的函数、装饰器
- Python - 函数/方法装饰器
- Python函数/方法装饰器
- Python之装饰器函数
- Python中的函数装饰器
- 理解Python函数装饰器
- python装饰器的4中类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类
- python 嵌套函数、闭包装饰器、装饰器例子
- ,智商达到140及以上可以称之为天才
- 以称之为天才。就是具有卓越想象力,创
- 基本的WEB概念
- MSBuid使用和编译失败
- 安卓项目中的必须文件
- PYTHON 函数装饰器
- Android SQLite数据库
- POJ2386 Lake Counting 【DFS】
- 字符编码笔记:ASCII,Unicode和UTF-8
- Illegal instruction 的解决方法
- ubuntu快捷键启动脚本或程序
- USACO 1.3 - Combination Lock(暴力枚举)
- PAT 1009. Product of Polynomials (25)
- Insertion Sort List