成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python裝飾器:python真正入門的鑒定標準

ranwu / 1271人閱讀

上一篇文章:Python是動態(tài)語言:動態(tài)添加或刪除屬性、方法
下一篇文章:私有化規(guī)則與屬性Property

裝飾器功能:

引入日志

函數(shù)執(zhí)行時間統(tǒng)計

執(zhí)行函數(shù)前預(yù)備處理

執(zhí)行函數(shù)后清理功能

權(quán)限校驗

緩存

1、無參數(shù)函數(shù)的裝飾器

實例:

from time import ctime,sleep
def time_fun(func):
    #內(nèi)部包裹函數(shù)
    def wrapped_fun():
        #ctime():打印當前時間
        print("%s 在 %s  時被調(diào)用"%(func.__name__,ctime()))
        #執(zhí)行函數(shù)執(zhí)行
        func()
    #把內(nèi)部嵌套函數(shù)作為對象返回
    return wrapped_fun

@time_fun
def test():
    print("test 執(zhí)行了")

test()
#休眠3秒
sleep(3)
test()

結(jié)果:

test 在 Wed Aug 15 22:19:51 2018 時被調(diào)用
test 執(zhí)行了
test 在 Wed Aug 15 22:19:53 2018 時被調(diào)用
test 執(zhí)行了
2、有參數(shù)函數(shù)的裝飾器

實例:

from time import ctime,sleep
def time_fun(func):
    #內(nèi)部包裹函數(shù)
    def wrapped_fun(a,b):
        #ctime():打印當前時間
        print("%s 在 %s  時被調(diào)用"%(func.__name__,ctime()))
        #執(zhí)行函數(shù)執(zhí)行
        func(a,b)
    #把內(nèi)部嵌套函數(shù)作為對象返回
    return wrapped_fun

@time_fun
def test(a,b):
    print(a+b)

test(1,2)
#休眠3秒
sleep(3)
test(3,4)

結(jié)果:

test 在 Wed Aug 15 22:23:07 2018 時被調(diào)用
3
test 在 Wed Aug 15 22:23:10 2018 時被調(diào)用
7
3、不定長函數(shù)的裝飾器

實例:

from time import ctime,sleep
def time_fun(func):
    #內(nèi)部包裹函數(shù)
    def wrapped_fun(*args,**kwargs):
        #ctime():打印當前時間
        print("%s 在 %s  時被調(diào)用"%(func.__name__,ctime()))
        #執(zhí)行函數(shù)執(zhí)行
        func(*args,**kwargs)
    #把內(nèi)部嵌套函數(shù)作為對象返回
    return wrapped_fun

@time_fun
def test(a,b,c):
    print(a+b+c)

test(1,2,3)
#休眠3秒
sleep(3)
test(3,4,5)

結(jié)果:

test 在 Wed Aug 15 22:26:36 2018 時被調(diào)用
6
test 在 Wed Aug 15 22:26:39 2018 時被調(diào)用
12
4、帶返回值函數(shù)的裝飾器

實例:

from time import ctime,sleep
def time_fun(func):
    #內(nèi)部包裹函數(shù)
    def wrapped_fun(*args,**kwargs):
        #ctime():打印當前時間
        print("%s 在 %s  時被調(diào)用"%(func.__name__,ctime()))
        #執(zhí)行函數(shù)執(zhí)行
        return func(*args,**kwargs)
    #把內(nèi)部嵌套函數(shù)作為對象返回
    return wrapped_fun

@time_fun
def test(a,b,c):
    print("test--",a+b+c)

@time_fun
def test2(a,b,c):
    return a+b+c

test(1,2,3)
print(test2(1,2,3))
#休眠3秒
sleep(3)
test(1,2,3)
print(test2(3,4,5))

結(jié)果:

test 在 Wed Aug 15 22:31:14 2018 時被調(diào)用
test-- 6
test2 在 Wed Aug 15 22:31:14 2018 時被調(diào)用
6
test 在 Wed Aug 15 22:31:17 2018 時被調(diào)用
test-- 6
test2 在 Wed Aug 15 22:31:17 2018 時被調(diào)用
12
5、裝飾器帶有參數(shù)

實例:

from time import ctime,sleep
def time_fun_pre(pre="hello"):
    def time_fun(func):
        # 內(nèi)部包裹函數(shù)
        def wrapped_fun(*args, **kwargs):
            # ctime():打印當前時間
            print("%s 在 %s  時被調(diào)用,pre參數(shù)為:%s" % (func.__name__, ctime(),pre))
            # 執(zhí)行函數(shù)執(zhí)行
            return func(*args, **kwargs)

        # 把內(nèi)部嵌套函數(shù)作為對象返回
        return wrapped_fun
    return time_fun

@time_fun_pre("mark_test")
def test(a,b,c):
    print("test--",a+b+c)

@time_fun_pre("mark_test2")
def test2(a,b,c):
    return a+b+c

test(1,2,3)
print(test2(1,2,3))
#休眠3秒
sleep(3)
test(1,2,3)
print(test2(3,4,5))

結(jié)果:

test 在 Wed Aug 15 22:43:27 2018 時被調(diào)用,pre參數(shù)為:mark_test
test-- 6
test2 在 Wed Aug 15 22:43:27 2018 時被調(diào)用,pre參數(shù)為:mark_test2
6
test 在 Wed Aug 15 22:43:30 2018 時被調(diào)用,pre參數(shù)為:mark_test
test-- 6
test2 在 Wed Aug 15 22:43:30 2018 時被調(diào)用,pre參數(shù)為:mark_test2
12
6、類裝飾器
python類裝飾性必須要接受一個callable對象作為參數(shù),然后返回一個callable對象,在python中,一般callable對象都是函數(shù),

只要對象重寫了__call__()方法,那么這個對象就是callable對象。

實例:

class Test():
    def __init__(self,func):
        print("test初始化:",func.__name__)
        self.func=func

    def __call__(self, *args, **kwargs):
        print("我調(diào)用了")
        self.func
@Test
def test():
    print("--test--")
test()

結(jié)果:

test初始化: test
我調(diào)用了

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/42245.html

相關(guān)文章

  • Python爬蟲學(xué)習路線

    摘要:以下這些項目,你拿來學(xué)習學(xué)習練練手。當你每個步驟都能做到很優(yōu)秀的時候,你應(yīng)該考慮如何組合這四個步驟,使你的爬蟲達到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計方案,比如說。 (一)如何學(xué)習Python 學(xué)習Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...

    liaoyg8023 評論0 收藏0
  • Python函數(shù)裝飾和閉包

    摘要:變量查找規(guī)則在中一個變量的查找順序是局部環(huán)境,閉包,全局,內(nèi)建閉包引用了自由變量的函數(shù)。閉包的作用閉包的最大特點是可以將父函數(shù)的變量與內(nèi)部函數(shù)綁定,并返回綁定變量后的函數(shù),此時即便生成閉包的環(huán)境父函數(shù)已經(jīng)釋放,閉包仍然存在。 導(dǎo)語:本文章記錄了本人在學(xué)習Python基礎(chǔ)之函數(shù)篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學(xué)習并交流。 本文重點: 1、掌握裝飾器的本質(zhì)、功...

    caozhijian 評論0 收藏0
  • Python學(xué)習之路26-函數(shù)裝飾和閉包

    摘要:初步認識裝飾器函數(shù)裝飾器用于在源代碼中標記函數(shù),以某種方式增強函數(shù)的行為。函數(shù)裝飾器在導(dǎo)入模塊時立即執(zhí)行,而被裝飾的函數(shù)只在明確調(diào)用時運行。只有涉及嵌套函數(shù)時才有閉包問題。如果想保留函數(shù)原本的屬性,可以使用標準庫中的裝飾器。 《流暢的Python》筆記本篇將從最簡單的裝飾器開始,逐漸深入到閉包的概念,然后實現(xiàn)參數(shù)化裝飾器,最后介紹標準庫中常用的裝飾器。 1. 初步認識裝飾器 函數(shù)裝飾...

    sunny5541 評論0 收藏0
  • Python

    摘要:最近看前端都展開了幾場而我大知乎最熱語言還沒有相關(guān)。有關(guān)書籍的介紹,大部分截取自是官方介紹。但從開始,標準庫為我們提供了模塊,它提供了和兩個類,實現(xiàn)了對和的進一步抽象,對編寫線程池進程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進階的書, 里面介紹的基本都是高級的python用法. 對于初學(xué)python的人來說, 基礎(chǔ)大概也就夠用了...

    dailybird 評論0 收藏0
  • python裝飾入門小結(jié)

    摘要:使用一年多了,一直知道有個裝飾器,很好用,試圖理解過,可能由于資料找的不好,自己的悟性太差,一直沒有搞清楚,今天查了一些資料,算是理解了,現(xiàn)在簡單記錄下。 使用python一年多了,一直知道python有個裝飾器,很好用,試圖理解過,可能由于資料找的不好,自己的悟性太差,一直沒有搞清楚,今天查了一些資料,算是理解了,現(xiàn)在簡單記錄下。python的裝飾器本身的功能是在不改變已有函數(shù)本身的...

    SunZhaopeng 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<