国产探花免费观看_亚洲丰满少妇自慰呻吟_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(),函數的調用方法,只有見到這個括號,程序會根據
                                                   函數名從內存中找到函數體,然后執行它

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大渡口区| 黎平县| 德惠市| 迁西县| 五大连池市| 任丘市| 潮州市| 黑河市| 大荔县| 霍林郭勒市| 鹿泉市| 蚌埠市| 涡阳县| 延津县| 恩平市| 宜都市| 灌南县| 吉水县| 巩义市| 闸北区| 车险| 乡城县| 竹溪县| 大港区| 岑巩县| 沁水县| 华蓥市| 临城县| 奉节县| 曲水县| 河北省| 柳林县| 友谊县| 兴业县| 靖远县| 乌拉特前旗| 两当县| 旌德县| 榕江县| 巍山| 舒城县|