首页 > 编程知识 正文

python3,python能做什么

时间:2023-05-03 17:23:54 阅读:143695 作者:2849

另一方面,不具有参数的装饰件“”不具有参数的装饰件返回函数的函数写入多个“' deflog(func ) :”(由函数执行的日志“' def wrapper )”3360 ppper '装饰件1 start . ' ) func returnwrapperdeflog _ in (func ) : ' '函数执行日志' ' def wrapper ' ) : print ) )装饰件2 start . defhello () :“”简单功能模拟“”“打印”“helloworld”) if__name_=='__maint

二、带参数的装饰器1 .添加装饰器的函数没有参数,在原装饰器的外侧嵌套了装饰器。 外部嵌套参数可用于查看hello ()的打印结果

2 .某些函数具有参数,如果具有参数本身具有参数定义内装,则需要传递这些函数

如果函数返回值,则内部装修首先临时保存结果,最后返回

fromfunctoolsimportwrapsdeflog (name=none ) : )“”是函数执行日志(“def decorator”func ) :@wraps ) ) func # defwrapper(*args *Kwargs(: )使用传统魔法方法传递的“”装饰器内部函数“”“#内饰器更改原始函数名称文档信息并打印”({0}start.'.format ) . format(func.__doc__ ) )此处文档信息print )---- wrapper 3360 {0} '.format (func._ _ name _ ) )是否已更改end.).format ) name ) ) return temp # wrapper._ _ doc _=func._ _ doc ) )的wrapper._ _ name _=func ) 这里必须传递参数而不传递默认的Nonedef hello )。if _ name _=' _ _ main _ ' : print (' doc : {0} '.format )

虽然必须读取from functools import wraps,但是打印装饰器内部wrapper (如果未在函数之前添加@wraps,则在主方法中为hello )函数的文档信息和名称时,将会出现以下结果

2.1注释掉@ wraps运行结果后得到的hello文档信息已更改

2.2添加@ wraps的执行结果

总结1 .添加内部提供的装饰器@wraps,以便可以对以前编写的函数重用装饰器,然后原本函数的信息不会发生改变,所以每次编写装饰器时都要添加@wraps

2 .如果函数有参数,则在装饰器内也传递参数。使用魔法方法*args,**kwargs在装饰器内部传参

3 .在函数内为add ) )函数有返回值,请在装饰器内部用临时变量保存结果,并返回最后

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。