国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何快速理解python裝飾器

rockswang / 1665人閱讀

摘要:快速理解裝飾器,從名字可以大概看出,其作用可以概括為增強(qiáng)擴(kuò)展函數(shù)功能。裝飾器本質(zhì)上就是以函數(shù)作為參數(shù),能返回包含調(diào)用該參數(shù)函數(shù)及其他功能的新函數(shù)的一種函數(shù)。

快速理解

裝飾器,從名字可以大概看出,其作用可以概括為: 增強(qiáng)(擴(kuò)展)函數(shù)功能。

裝飾器本質(zhì)上就是: 以函數(shù)作為參數(shù),能返回包含調(diào)用該參數(shù)函數(shù)及其他功能的新函數(shù)的一種函數(shù)。

裝飾器通過(guò)在需要被裝飾的函數(shù)的定義前一行添加@decorator_name的方式使用

舉例說(shuō)明 源函數(shù)
def hello():
    print("hello world!!!")
使用裝飾器擴(kuò)展hello()功能而不直接修改其定義
def log(func):
    """print function name before it"s called"""
    def wrapper(*args, **kw):  # 閉包,實(shí)現(xiàn)裝飾器的基礎(chǔ)
        print("call %s():
" % func.__name__, end="    ")
        return func(*args, **kw)  # 傳遞給wrapper的參數(shù)最后傳遞給了func
    return wrapper

@log
def hello():
    print("hello world!!!")

hello()

輸出:

call hello():
    hello world!!!
將@log 放到hello()定義前一行,相當(dāng)于執(zhí)行以下過(guò)程
hello = log(hello)  # 此調(diào)用的執(zhí)行效果等效于  log.func = hello, hello = log.wrapper
通過(guò) @property 裝飾器驗(yàn)證是否可以使用上述其等效方法替換正常修飾器的使用
class Student(object):
    # @property  # 作用是把類方法轉(zhuǎn)換成類屬性
    # def score(self):
    #     return self._score

    # 替換 @property的效果
    def score(self):
        return self._score
    score = property(score)

    @score.setter
    def score(self, value):
        if not isinstance(value, int):
            raise ValueError("score must be an integer!")
        if value < 0 or value > 100:
            raise ValueError("score must between 0 ~ 100!")
        self._score = value

a = Student()
a.score = 60
a.score

輸出:

60

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42135.html

相關(guān)文章

  • Python】一文弄懂python裝飾(附源碼例子)

    摘要:裝飾器的使用符合了面向?qū)ο缶幊痰拈_放封閉原則。三簡(jiǎn)單的裝飾器基于上面的函數(shù)執(zhí)行時(shí)間的需求,我們就手寫一個(gè)簡(jiǎn)單的裝飾器進(jìn)行實(shí)現(xiàn)。函數(shù)體就是要實(shí)現(xiàn)裝飾器的內(nèi)容。類裝飾器的實(shí)現(xiàn)是調(diào)用了類里面的函數(shù)。類裝飾器的寫法比我們裝飾器函數(shù)的寫法更加簡(jiǎn)單。 目錄 前言 一、什么是裝飾器 二、為什么要用裝飾器 ...

    liuchengxu 評(píng)論0 收藏0
  • 后端技術(shù) - 收藏集 - 掘金

    摘要:理解迭代對(duì)象迭代器生成器后端掘金本文源自作者的一篇博文,原文是,俺寫的這篇文章是按照自己的理解做的參考翻譯。比較的是兩個(gè)對(duì)象的內(nèi)容是后端掘金黑魔法之協(xié)程異步后端掘金本文為作者原創(chuàng),轉(zhuǎn)載請(qǐng)先與作者聯(lián)系。 完全理解關(guān)鍵字with與上下文管理器 - 掘金如果你有閱讀源碼的習(xí)慣,可能會(huì)看到一些優(yōu)秀的代碼經(jīng)常出現(xiàn)帶有 with 關(guān)鍵字的語(yǔ)句,它通常用在什么場(chǎng)景呢?今天就來(lái)說(shuō)說(shuō) with 和 上下...

    oujie 評(píng)論0 收藏0
  • Python

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

    dailybird 評(píng)論0 收藏0
  • 為什么離不開 Stackoverflow

    摘要:接下來(lái)手工實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的裝飾器原型,緊接著引入中的裝飾器語(yǔ)法。最后還列出了一些裝飾器的高級(jí)用法,包括給裝飾器傳遞參數(shù)等。讀完整個(gè)答案,一定能對(duì)裝飾器有較深的理解,并且知道理解裝飾器的思考過(guò)程。 作為一名程序員,如果沒(méi)有聽過(guò) Stackoverflow,那么你最好去面壁思過(guò)一下。程序員最需要閱讀的一本編程書籍(其實(shí)編程書留下這本就夠了!): showImg(https://segmen...

    peixn 評(píng)論0 收藏0
  • 簡(jiǎn)單理解Python裝飾

    摘要:下面我們一起拋去無(wú)關(guān)概念,簡(jiǎn)單地理解下的裝飾器。用函數(shù)實(shí)現(xiàn)裝飾器裝飾器要求入?yún)⑹呛瘮?shù)對(duì)象,返回值是函數(shù)對(duì)象,嵌套函數(shù)完全能勝任。為了對(duì)調(diào)用方透明,裝飾器返回的對(duì)象要偽裝成被裝飾的函數(shù)。 來(lái)源:http://www.lightxue.com/under... ???????Python有大量強(qiáng)大又貼心的特性,如果要列個(gè)最受歡迎排行榜,那么裝飾器絕對(duì)會(huì)在其中。???????剛接觸裝飾器,會(huì)...

    Meils 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<