国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解Python裝飾器由淺入深

2020-02-23 04:08:49
字體:
來源:轉載
供稿:網友

裝飾器的功能在很多語言中都有,名字也不盡相同,其實它體現的是一種設計模式,強調的是開放封閉原則,更多的用于后期功能升級而不是編寫新的代碼。裝飾器不光能裝飾函數,也能裝飾其他的對象,比如類,但通常,我們以裝飾函數為例子介紹其用法。要理解在Python中裝飾器的原理,需要一步一步來。本文盡量描述得淺顯易懂,從最基礎的內容講起。

(注:以下使用Python3.5.1環境)

一、Python的函數相關基礎

第一,必須強調的是python是從上往下順序執行的,而且碰到函數的定義代碼塊是不會立即執行它的,只有等到該函數被調用時,才會執行其內部的代碼塊。

def foo():print("foo函數被運行了!") 如果就這么樣,foo里的語句是不會被執行的。程序只是簡單的將定義代碼塊讀入內存中。

再看看,順序執行的例子:

def foo(): print("我是上面的函數定義!")def foo(): print("我是下面的函數定義!")foo()運行結果:我是下面的函數定義

可見,因為順序執行的原因,下面的foo將上面的foo覆蓋了。因此,在Python中代碼的放置位置是有要求的,不能隨意擺放,函數體要放在被調用的語句之前。

 其次,我們還要先搞清楚幾樣東西:函數名、函數體、返回值,函數的內存地址、函數名加括號、函數名被當作參數、函數名加括號被當作參數、返回函數名、返回函數名加括號。對于如下的函數:

 def foo(): print("讓我們干點啥!") return "ok" foo()  

     函數名:        foo

  函數體:        第1-3行

  返回值:        字符串“ok”    如果不顯式給出return的對象,那么默認返回None

  函數的內存地址:    當函數體被讀進內存后的保存位置,它由標識符即函數名foo引用,
                                                   也就是說foo指向的是函數體在內存內的保存位置。

  函數名加括號:       例如foo(),函數的調用方法,只有見到這個括號,程序會根據
                                                   函數名從內存中找到函數體,然后執行它

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 韶关市| 无棣县| 准格尔旗| 中阳县| 桐柏县| 永胜县| 新河县| 达日县| 勃利县| 新丰县| 襄城县| 上栗县| 安宁市| 蓬溪县| 余庆县| 信宜市| 宾川县| 花垣县| 阿拉善右旗| 松桃| 姜堰市| 图木舒克市| 天等县| 河池市| 密云县| 湖口县| 义马市| 通化市| 兴宁市| 洞口县| 福泉市| 会东县| 安龙县| 泗洪县| 永年县| 从江县| 玛曲县| 玉田县| 咸丰县| 鱼台县| 宣汉县|