首页 > 编程知识 正文

python实例,python为什么叫爬虫

时间:2023-05-06 12:07:41 阅读:143714 作者:591

标准库functools中的wrap函数用于包装函数,原始函数,如__name__、__doc__、__annotations__等,而不更改原始函数的功能

我们先来看一个简单的例子

importfunctoolsdeffunc _1(x : str )-none : ' ' function : return 3360 none ' ' print ' ' ' func _1), x ) @functools.wraps(func_1) def demo ) ) : (' demo : return : none ' ' ' ' ' print ' ' demo ' ) ) ) demo ) demo demo.__doc__ ) print ) demoannotations: ),demo.__ ) ) demoannotations360 ),demo )。

demoname : func _1demodoc : function : return : nonedemoannotations : { ' x ' : class ' str ',' return ' 3333333330 demo函数本身的功能不变。 “demo”将被打印,但__name__将被打印

functools.wrap可用于装饰器的内层函数,以抵消装饰器的副作用。 因为如果使用装饰器的话,原函数会被内层函数代入覆盖,函数名等信息会丢失。 (

definfo(func ) :defwrap(a,b ) : return func(a ) a,b ) return wrap@infodef multiply(x ) x,y ) : returnx

当multiply name: wrap使用装饰器时,multiply指向内层函数wrap,因此其名称为wrap

可以包装内层函数

definfo(func ) :@functools.wraps ) func ) def wrap(a ) a,b ) : return func(a ) a,b ) return wrap @ info def MUF

因为multiply name: multiply @info装饰器与multiply=info(multiply )等价,所以func指的是原来的multiply函数,@functools.wraps ) func

请注意,wrap函数与原始multiply函数的参数兼容

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