Python中带参数的decorator
来源:互联网 发布:美国创价大学 知乎 编辑:程序博客网 时间:2024/06/05 14:01
今天继续来分享Python中的一些小知识
今天分享的是带参数的decorator
在慕课网上学习到这一节的时候想了比较长的时间。
首先讲一下什么是装饰器
在Python当中,函数是可以作为参数被传入另一个参数的。我们把这种函数叫做高级函数。
而装饰器就是高级函数的一个小应用。
原理如下:装饰器接收一个函数之后,在函数体内定义另外一个函数,在这个新定义的函数内先执行操作A,之后再返回接收的那一个函数。
执行经过装饰的函数时便会发现,在执行原函数之前会执行操作A。
假设log是一个装饰器函数
def log(f):
def h(*args,**kw):
print'call %s'%f.__name__
return f(*args,**kw)
return h
其中f是传入的log函数,h是新定义的函数,在h函数内,执行print命令后返回了f函数
而log函数则是返回这个新的函数h。
装饰器的表示方法:
@log
def a:
…………
即将放入log进行装饰
其实我和大家想分享的是带参数的装饰器。即
@log(1)
def a:
…………
这又是怎么一回事呢?
这时候的log是这样定义的
def log(n)
def log_decorator(f)
def h(*args,**kw):
print'call %s'%f.__name__
print n
return f(*args,**kw)
return h
return log_decorator
我们发现这是在原来无参数的装饰器外部又套了一层函数。
最外层函数的作用就是将参数引入到函数内
也许现在有点混
但是试着研究一下log(1)
发现他其实就是log_decorator
而log_decorator就是之前无参数时的log
因此得出一下结论:此log非彼log ,此log内的log_decorator才对应彼log。
这样是不是好理解一点呢?
今天分享的是带参数的decorator
在慕课网上学习到这一节的时候想了比较长的时间。
首先讲一下什么是装饰器
在Python当中,函数是可以作为参数被传入另一个参数的。我们把这种函数叫做高级函数。
而装饰器就是高级函数的一个小应用。
原理如下:装饰器接收一个函数之后,在函数体内定义另外一个函数,在这个新定义的函数内先执行操作A,之后再返回接收的那一个函数。
执行经过装饰的函数时便会发现,在执行原函数之前会执行操作A。
假设log是一个装饰器函数
def log(f):
def h(*args,**kw):
print'call %s'%f.__name__
return f(*args,**kw)
return h
其中f是传入的log函数,h是新定义的函数,在h函数内,执行print命令后返回了f函数
而log函数则是返回这个新的函数h。
装饰器的表示方法:
@log
def a:
…………
即将放入log进行装饰
其实我和大家想分享的是带参数的装饰器。即
@log(1)
def a:
…………
这又是怎么一回事呢?
这时候的log是这样定义的
def log(n)
def log_decorator(f)
def h(*args,**kw):
print'call %s'%f.__name__
print n
return f(*args,**kw)
return h
return log_decorator
我们发现这是在原来无参数的装饰器外部又套了一层函数。
最外层函数的作用就是将参数引入到函数内
也许现在有点混
但是试着研究一下log(1)
发现他其实就是log_decorator
而log_decorator就是之前无参数时的log
因此得出一下结论:此log非彼log ,此log内的log_decorator才对应彼log。
这样是不是好理解一点呢?
0 0
- Python中带参数的decorator
- Python编写带参数decorator
- Python进阶(八)-编写带参数decorator
- python中编写无参数decorator
- 从坷里化理解Py带参数的decorator
- python中参数(带星号的参数)
- Python中若干概念和语法糖的廓清:参数、generator与decorator
- python 中带星号和双星好的参数
- python中带星号/一个星号/两个星号的参数
- python中带星号/一个星号/两个星号的参数
- python中带星号/一个星号/两个星号的参数
- Python函数带*的参数
- Python:decorator的使用
- python 的decorator
- Python的@符号 --decorator
- 【Python】decorator的作用
- Python的decorator使用
- python decorator的理解
- C语言二叉树的创建
- 恢复矫正部分
- 【菜鸟之路】重捡Git
- ESP8266--学习笔记(二)扫描、连接WiFi
- java二叉树的创建与遍历
- Python中带参数的decorator
- Excel中批量插入图片并对齐
- JQ源码解析篇
- vue.js和angular.js的特点与比较
- CSU-1837 Tree Count(树的同构)
- Mysql之数据库备份与恢复
- blrlpbrzhjxrvjf
- 动态规划算法
- ztree+java后台取数据(包括异步)生成树状图