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

資訊專欄INFORMATION COLUMN

如何快速理解python裝飾器

rockswang / 1675人閱讀

摘要:快速理解裝飾器,從名字可以大概看出,其作用可以概括為增強擴展函數功能。裝飾器本質上就是以函數作為參數,能返回包含調用該參數函數及其他功能的新函數的一種函數。

快速理解

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

裝飾器本質上就是: 以函數作為參數,能返回包含調用該參數函數及其他功能的新函數的一種函數。

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

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

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

hello()

輸出:

call hello():
    hello world!!!
將@log 放到hello()定義前一行,相當于執行以下過程
hello = log(hello)  # 此調用的執行效果等效于  log.func = hello, hello = log.wrapper
通過 @property 裝飾器驗證是否可以使用上述其等效方法替換正常修飾器的使用
class Student(object):
    # @property  # 作用是把類方法轉換成類屬性
    # 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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/42135.html

相關文章

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

    摘要:裝飾器的使用符合了面向對象編程的開放封閉原則。三簡單的裝飾器基于上面的函數執行時間的需求,我們就手寫一個簡單的裝飾器進行實現。函數體就是要實現裝飾器的內容。類裝飾器的實現是調用了類里面的函數。類裝飾器的寫法比我們裝飾器函數的寫法更加簡單。 目錄 前言 一、什么是裝飾器 二、為什么要用裝飾器 ...

    liuchengxu 評論0 收藏0
  • 后端技術 - 收藏集 - 掘金

    摘要:理解迭代對象迭代器生成器后端掘金本文源自作者的一篇博文,原文是,俺寫的這篇文章是按照自己的理解做的參考翻譯。比較的是兩個對象的內容是后端掘金黑魔法之協程異步后端掘金本文為作者原創,轉載請先與作者聯系。 完全理解關鍵字with與上下文管理器 - 掘金如果你有閱讀源碼的習慣,可能會看到一些優秀的代碼經常出現帶有 with 關鍵字的語句,它通常用在什么場景呢?今天就來說說 with 和 上下...

    oujie 評論0 收藏0
  • Python

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

    dailybird 評論0 收藏0
  • 為什么離不開 Stackoverflow

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

    peixn 評論0 收藏0
  • 簡單理解Python裝飾

    摘要:下面我們一起拋去無關概念,簡單地理解下的裝飾器。用函數實現裝飾器裝飾器要求入參是函數對象,返回值是函數對象,嵌套函數完全能勝任。為了對調用方透明,裝飾器返回的對象要偽裝成被裝飾的函數。 來源:http://www.lightxue.com/under... ???????Python有大量強大又貼心的特性,如果要列個最受歡迎排行榜,那么裝飾器絕對會在其中。???????剛接觸裝飾器,會...

    Meils 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<