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

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

python的函數(shù)裝飾器有什么用

這篇文章將為大家詳細(xì)講解有關(guān)python的函數(shù)裝飾器有什么用,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),雅安服務(wù)器托管、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,成都聯(lián)通服務(wù)器托管,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國(guó)大陸、港澳臺(tái)以及歐美等多個(gè)國(guó)家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。

pyhton的函數(shù)裝飾器可以將裝飾器函數(shù)通過(guò)@方法很便捷的為函數(shù)增添功能

"""
一.函數(shù)用法
"""def sum_list(list):
    """將列表中的數(shù)字求和
    輸入:含有數(shù)字的列表
    list=[2,6,3,2,1]
    sum_list(list)
    """
    sum_=0
    for i in list:
        sum_+=i    return sum_#1.將函數(shù)sum_list賦值給變量list_sum,從而產(chǎn)生的新名稱函數(shù)list_sum()list_sum=sum_list
list_sum([2,5,3,8,6])#2.刪除函數(shù)del list_sum
list_sum([4,3,5,2])#NameError: name 'list_sum' is not defined#3.函數(shù)中定義函數(shù)def sum_(list):
    def sum_list(list):
        """將列表中的數(shù)字求和
        輸入:含有數(shù)字的列表
        list=[2,6,3,2,1]
        sum_list(list)
        """
        sum_ = 0
        for i in list:
            sum_ += i        return sum_    return sum_list(list)sum_([3,6,3,2])#4.將函數(shù)作為參數(shù)傳入另一個(gè)函數(shù)def print_():
    print('好開心!')print_()#定義一個(gè)嵌套函數(shù),參數(shù)為定義好的函數(shù)def deco(function):
    def wrapped():
        print('這個(gè)函數(shù)被嵌套了')
        function()
    return  wrapped"""
二,函數(shù)裝飾器
"""#1.用函數(shù)裝飾器替代嵌套函數(shù)if '嵌套函數(shù)'=='嵌套函數(shù)':
    #定義一個(gè)打印函數(shù)
    def print_():
        print('好開心!')
    print_()

    #定義一個(gè)嵌套函數(shù),參數(shù)為定義好的函數(shù)
    def deco(function):
        def wrapped():
            print('這個(gè)函數(shù)被嵌套了')
            function()
        return  wrapped

    print_2=deco(print_)#將嵌套函數(shù)的功能賦值給新函數(shù)print_2()
    print_2()if '函數(shù)裝飾器'=='函數(shù)裝飾器':
    #或者采用裝飾器的方法
    def deco(function):
        def wrapped():
            print('這個(gè)函數(shù)被嵌套了')
            function()
        return  wrapped

    @deco#可以直接將函數(shù)deco()嵌套在函數(shù)print_()上,形成新的函數(shù)
    def print_():
        print('好開心!')
    print_()#2.用一個(gè)函數(shù)裝飾器裝飾多個(gè)函數(shù)def print_name(function):
    """該裝飾器函數(shù)將為函數(shù)增加打印函數(shù)名字的功能"""
    import functools#該語(yǔ)句可以使函數(shù)被裝飾后,函數(shù)信息保持不變
    @functools.wraps(function)
    def wrapped(*args,**kwargs):
        """
        *args:表示可傳入任意數(shù)量的單值對(duì)象,函數(shù)將自動(dòng)將其收集在元組中
        **kwargvs:表示可以傳入任意數(shù)量的字典鍵值對(duì),比如:value=3,函數(shù)將自動(dòng)收集為字典
        """
        print('函數(shù)的名字為%s'%function.__name__)
        return  function(*args,**kwargs)#執(zhí)行傳入?yún)?shù)的函數(shù)
    return wrapped

@print_namedef sum_list(list):
    sum_=0
    for i in list:
        sum_+=i    return sum_
sum_list([5,7,3,2])sum_list.__name__#經(jīng)過(guò)檢查,函數(shù)名稱沒(méi)有發(fā)生改變@print_namedef small_value(list):
    return min(list)small_value([4,8,4,2,4])#3.用多個(gè)函數(shù)裝飾器裝飾一個(gè)函數(shù),靠近函數(shù)的裝飾器將被優(yōu)先執(zhí)行def print_hash(function):
    """該裝飾器函數(shù)將為函數(shù)增加打印函數(shù)hash值的功能"""
    def wrapped(*args,**kwargs):
        """
        *args:表示可傳入任意數(shù)量的單值對(duì)象,函數(shù)將自動(dòng)將其收集在元組中
        **kwargvs:表示可以傳入任意數(shù)量的字典鍵值對(duì),比如:value=3,函數(shù)將自動(dòng)收集為字典
        """
        print('函數(shù)的名字為%s'%function.__hash__)
        return  function(*args,**kwargs)#執(zhí)行傳入?yún)?shù)的函數(shù)
    return wrappeddef print_name(function):
    """該裝飾器函數(shù)將為函數(shù)增加打印函數(shù)名字的功能"""
    def wrapped(*args,**kwargs):
        """
        *args:表示可傳入任意數(shù)量的單值對(duì)象,函數(shù)將自動(dòng)將其收集在元組中
        **kwargvs:表示可以傳入任意數(shù)量的字典鍵值對(duì),比如:value=3,函數(shù)將自動(dòng)收集為字典
        """
        print('函數(shù)的名字為%s'%function.__name__)
        return  function(*args,**kwargs)#執(zhí)行傳入?yún)?shù)的函數(shù)
    return wrapped#為函數(shù)增添打印函數(shù)名稱和函數(shù)值的功能@print_hash
@print_namedef small_value(list):
    return min(list)

用類作為裝飾

#用類作為裝飾class FirstDecorator(object):#需要引入object
    def __init__(self,func):
        self.__func=func    def __call__(self, *args, **kwargs):# __call__ 方法可以讓函數(shù)使用裝飾
        import time        print('執(zhí)行時(shí)間:{}'.format(time.ctime(time.time())))
        self.__func(*args)@FirstDecorator#使用類的裝飾def print_(*number):
    print(number)print_(5,63,8,4,6,2)

關(guān)于“python的函數(shù)裝飾器有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。


網(wǎng)站欄目:python的函數(shù)裝飾器有什么用
分享鏈接:http://weahome.cn/article/gsgscj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部