python代码,如何编写不同参数传递方式的装饰器?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
继续描述python
代码,本文还是继续描述python
装饰器。在上一篇文章里面,苏南大叔描述了使用*args,**kwargs
来解决参数传递问题,本文里面使用一个新的思路写法来解决这个问题,写法更加好一些。
大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文继续描述python
解释器的另外一种较完美写法。本文测试环境:win10
,python@3.6.8
。
第一种写法(推荐)
现在先回顾一下目前已有的python
装饰器代码结论,代码如下:
def examination(func):
print("准备参加考试")
def anyname(*args, **kwargs):
''' anydoc '''
print("考试前")
func(*args, **kwargs)
print("考试结束")
return anyname
@examination
def exam(lang):
print("考试中:"+lang)
exam("日本语")
第二种写法
现在展示第二个python
装饰器代码,代码如下:
def examination(*args,**kwargs):
print("准备考试")
def _anyname(fn):
print("考试结束前")
return fn
print("考试即将开始")
return _anyname
@examination()
def exam(lang):
print("考试中:"+lang)
exam("日本语")
这个代码模式是在itchat
模块中提取中提取到的,目前来看:
- 省略了两组
*args, **kwarg
。 - 装饰器必须用函数形式接受参数,也就是第一行
*args, **kwarg
。 - 这种情况
@
后面必须是个函数()
。 - 但是代码执行逻辑顺序略微有些奇怪。
- 无法监视到代码结束运行的情况。
相关链接
综述
在本文中,苏南大叔复述了两种更好的装饰器代码。更多python
代码内容,请点击链接:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。