[python]带参数的装饰函数解析
来源:互联网 发布:dhcp服务器linux 编辑:程序博客网 时间:2024/05/01 14:29
所谓装饰函数,也就是把目标函数包装下,再返回。
例如:
def log(f):
print "decorate the func " + f.__name__
def wrapper(*args, **kw):
return f(*args, **kw)
return wrapper
@log
def a():
print "I am a"
log就是一个装饰函数。
在解析之前先强调一个概念。
那就是python当中,
单独引用函数名,是不会执行函数的。
只有函数名 + 参数,才表示执行该函数。
例如:
def test_A():
return 1
b = test_A ---> 相当于定义了一个函数test_A的别名 b。
b = test_A() ---> 相当于 b= 1
这里要区分清楚。
解析带参数的装饰函数。
类似于
@log_with_para('test')
def a():
pass
因为装饰函数带了参数,相当于log函数立即执行了。
所以我们可以把 log_with_para('test')的执行结果,当成真正的装饰函数。
也就是说:
log_with_para函数本身,并不是装饰函数。
而是log_with_para函数的执行结果(return 值),才是真正的装饰函数!
所以上文示例中的log函数,要在外面再追加一层。应该改成下列形式:
def log_with_para(para):
def log(f):
print para # para 参数可以在内部任何地方使用。
print "decorate the func " + f.__name__
def wrapper(*args, **kw):
return f(*args, **kw)
return wrapper
return log
- [python]带参数的装饰函数解析
- python中的装饰器,函数带参数的装饰器,带类参数的装饰器
- python 9-3 如何定义带参数的装饰器,提取函数签名python3 inspect.signature()
- Python函数带*的参数
- python-定义带参数的装饰器-27
- python里使用带参数的装饰器
- 带参数的装饰器
- 带参数的装饰器
- python函数传递带*的参数说明
- Python带星号*的函数参数
- python的strip('')函数带参数
- python装饰器:有参数的装饰器、不定长参数的装饰器、装饰有返回值的函数、通用的装饰器
- Python装饰器:简单装饰,带参数装饰与类装饰器
- python 函数参数的传递(参数带星号的说明)
- python 函数参数的传递(参数带星号的说明)
- python 函数参数的传递(参数带星号的说明)
- python 函数参数的传递(参数带星号的说明)
- python 函数参数的传递(参数带星号的说明)
- 杭电校赛(逆袭指数)
- 队列的实现
- 变量作用域分析
- Laravel 校验规则之字段值唯一性校验
- 租房宝开发心得
- [python]带参数的装饰函数解析
- UITextField 随着键盘滚动
- Spring Security使用授权标签和注解
- centos 安装vpn
- 四、路径选择及KML导出
- 模板元编程第五章练习(非答案)
- Swift中函数名称的构成习惯
- 什么情况下使用多线程?
- linux下安装Maven