python 装饰器
来源:互联网 发布:兰印婚礼知乎 编辑:程序博客网 时间:2024/06/16 18:06
我的理解:
1. 当一个函数用了装饰器,则就不走自己内部的代码了(走装饰器),会将自己的函数地址传给装饰器。
2. 装饰器会返回一个函数指针,实际调用则走的是这个函数指针。
3. 由于装饰器获得了这个函数的地址,则在装饰器内,可以实际调用这个函数(必须调用,否则装饰器不再是装饰,而是篡改)。
4. 在装饰器内调用这个函数前,可以有一些其他的操作(装饰器的本质,起到装饰的效果)。
*arg, **kwargs 将实参中的无指定参数放在args tuple中,将有指定参数放在kwargs dict中。
例子:
def test(*arg, **kwargs):
pass
test(1,2,a=3,b=4)
则:args 为 (1,2)
kwargs 为 {'a':3, 'b':4}
1. 基本语法
(1) 无参
(一装饰器多个函数可用)
(2)有参
1. 当一个函数用了装饰器,则就不走自己内部的代码了(走装饰器),会将自己的函数地址传给装饰器。
2. 装饰器会返回一个函数指针,实际调用则走的是这个函数指针。
3. 由于装饰器获得了这个函数的地址,则在装饰器内,可以实际调用这个函数(必须调用,否则装饰器不再是装饰,而是篡改)。
4. 在装饰器内调用这个函数前,可以有一些其他的操作(装饰器的本质,起到装饰的效果)。
*arg, **kwargs 将实参中的无指定参数放在args tuple中,将有指定参数放在kwargs dict中。
例子:
def test(*arg, **kwargs):
pass
test(1,2,a=3,b=4)
则:args 为 (1,2)
kwargs 为 {'a':3, 'b':4}
1. 基本语法
(1) 无参
def deco(func): def _func(*arg, **kwargs): ret = func(*arg, **kwargs) return ret return _func@decodef myfunc1(a, b): print a + b return a + b@decodef myfunc2(a, b, c): print a + b + c return a + b + cprint myfunc1(1, 2)print myfunc2(1, 2, 3)
(一装饰器多个函数可用)
(2)有参
def deco(arg): def _deco(func): def _func(*arg, **kwargs): print arg ret = func(*arg, **kwargs) return ret return _func return _deco@deco("hi")def myfunc(): print 'hello' return 'hello world'print myfunc()
0 0
- python装饰器装饰类
- [python]python装饰器
- Python装饰器学习
- Python装饰器
- python 装饰器
- Python装饰器
- python 装饰器 应用
- python 装饰器2
- Python装饰器学习
- python装饰器
- python装饰器
- python 装饰器入门
- python装饰器
- python装饰器
- python 装饰器'@'
- python装饰器
- Python装饰器详解
- python 装饰器
- linux目录结构详细介绍
- 执行BAT 批处理文件 CMD窗口一闪而过
- 大数据量高并发的数据库优化详解
- Unity热更新专题(二)Lua编程语言
- vivado学习笔记2
- python 装饰器
- 【Windows】Apache的下载、安装、启动
- UI层复习笔记
- 超级快印自助复印手册简易版操作流程
- 2017-03-07
- 1352 集合计数(求解的个数)
- 机器学习开篇第一博
- Java的第20年:Java和我的故事
- 错误:Implicit super constructor Father() is undefined. Must explicitly invoke another constructor