真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

functools.wraps定義函數(shù)裝飾器

def tracer(func):
    def wrapper(*args, **kwargs):
        result = func(*args, **kwargs)
        print('%s(%r,%r)->%r'%(func.__name__,args,kwargs,result))
        return result
    return wrapper

@tracer
def fibonacci(n):
    if n in (0,1):
        return n
    return (fibonacci(n-1)+fibonacci(n-2))

fibonacci(3)
print(fibonacci)
print('help:')
help(fibonacci)

從執(zhí)行結(jié)果看到:最后的函數(shù)對(duì)象,變成了wrapper,而并非fibonacci函數(shù)對(duì)象。
因fibonacchi函數(shù)在裝飾器后,wrapper對(duì)象賦值給了fibonacci函數(shù)對(duì)象,即fibnacchi = wrapper。

成都創(chuàng)新互聯(lián)成立與2013年,先為師宗等服務(wù)建站,師宗等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為師宗企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

functools.wraps的使用:

也就是說(shuō),原函數(shù)的屬性失效了
如果想要保留原函數(shù)的屬性,就可以用到functools.wraps了

from functools import wraps
def tracer(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        result = func(*args, **kwargs)
        print('%s(%r,%r)->%r'%(func.__name__,args,kwargs,result))
        return result
    return wrapper

@tracer
def fibonacci(n):
    if n in (0,1):
        return n
    return (fibonacci(n-1)+fibonacci(n-2))

fibonacci(3)
print(fibonacci)
print('help:')
help(fibonacci)

functools.wraps在執(zhí)行之后,重新將函數(shù)賦值給原函數(shù):wrapper = fibonacchi。


分享標(biāo)題:functools.wraps定義函數(shù)裝飾器
本文地址:http://weahome.cn/article/gohpie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部