函數是組織好,可重復使用的,用來實現相關功能的代碼段
創新互聯公司是專業的咸陽網站建設公司,咸陽接單;提供成都做網站、網站設計,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行咸陽網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!
函數提高了代碼的重復利用率和應用的模塊性。
除Python自帶的函數之外,也可以自己創建函數,叫做自定義函數
語法:
函數代碼塊以 def 開頭
參數為 輸入值 ,放于函數名后口號里面,
函數內容以冒號:開始,函數體縮進, return 返回 輸出值
函數調用使用關鍵字參數來確定傳入的參數值,此時,如果多個函數則不需要按照指定順序。
在定義函數時,指定參數默認值。調用時如果不傳入參數,則使用默認值
不定長部分如果沒有指定參數,傳入是一個空元組
加了 兩個星號 ** 的參數會以字典的形式導入
/ 用來指明函數形參必須使用指定位置參數,不能使用關鍵字參數的形式。
3.8版本之后的才能使用
不使用 def 定義函數,沒有函數名
lamdba主體時一個表達式,而不是代碼塊,函數體比def簡單很多
定義在函數內部的為局部變量,僅能在函數內部使用
定義在函數外部的為全局變量,可在全局使用
模塊是將包含所有定義的函數和變量的文件,一般將同類功能的函數組和在一起稱為模塊。
模塊需要導入后,在調用相應函數進行使用
模塊導入的方法:
從模塊中導入一個指定的部分
把一個模塊的所有內容全都導入
創建一個寵物 Pet 類,根據該類創建的每個實例都將存儲名字和物種,賦予每個寵物吃飯(eat())和睡覺(sleep())的能力:
根據類創建實例
調用方法
給上面的例子進行補充,設置一個寵物到家的初始時間默認值為 0,對某個屬性設定默認值可以不提供形參。
調用一下read_time()
增加一個 update_time() 的方法,指定初始時間
調用
新增一個 increment_time() 方法,表示較初始值而言增加的時間
調用
一個類繼承另一個類時,它將自動獲得另一個類的所有屬性和方法;原有的類稱為父類,而新類稱為子類。子類繼承了其父類的所有屬性和方法,同時還可以定義自己的屬性和方法。
創建一個 Cat 類,繼承 Pet 的屬性,同時可以定義 Cat 特有的屬性。
調用
如果子類中的某些屬性與父類不一樣,可以在子類新建方法重新定義來改寫父類。
類的導入和函數的導入相同。
首先來看一個函數間的調用
類方法:
執行結果:
metaclass能有什么用處,先來個感性的認識:
1.1 在wiki上面,metaclass是這樣定義的:In object-oriented programming,
a metaclass is a class whose instances are classes.
Just as an ordinary class defines the behavior of certain objects,
a metaclass defines the behavior of certain classes and their instances.
也就是說metaclass的實例化結果是類,而class實例化的結果是instance。我是這么理解的:
metaclass是類似創建類的模板,所有的類都是通過他來create的(調用 new ),這使得你可以自由的控制
創建類的那個過程,實現你所需要的功能。
當然你也可以用函數的方式(下文會講)
4.1 用類的形式
4.1.1 類繼承于type, 例如: class Meta(type):pass
4.1.2 將需要使用metaclass來構建class的類的 metaclass 屬性(不需要顯示聲明,直接有的了)賦值為Meta(繼承于type的類)
4.2 用函數的形式
4.2.1 構建一個函數,例如叫metaclass_new, 需要3個參數:name, bases, attrs,
name: 類的名字
bases: 基類,通常是tuple類型
attrs: dict類型,就是類的屬性或者函數
4.2.2 將需要使用metaclass來構建class的類的 metaclass 屬性(不需要顯示聲明,直接有的了)賦值為函數metaclas_new
5.1 basic
metaclass的原理其實是這樣的:當定義好類之后,創建類的時候其實是調用了type的 new 方法為這個類分配內存空間,創建
好了之后再調用type的 init 方法初始化(做一些賦值等)。所以metaclass的所有magic其實就在于這個 new 方法里面了。
說說這個方法: new (cls, name, bases, attrs)
cls: 將要創建的類,類似與self,但是self指向的是instance,而這里cls指向的是class
name: 類的名字,也就是我們通常用類名. name 獲取的。
bases: 基類
attrs: 屬性的dict。dict的內容可以是變量(類屬性),也可以是函數(類方法)。
所以在創建類的過程,我們可以在這個函數里面修改name,bases,attrs的值來自由的達到我們的功能。這里常用的配合方法是
getattr和setattr(just an advice)
下面實現python中在一個類中調用另一個類的函數方法
或者下面來一個號理解的例子
執行結果:
先來介紹內部類與外部類是什么?
看源碼解析:
內部類調用外部類的類屬性和類方法
參考文獻1
參考文獻2
參考文獻3
本文標題:python類和函數創建 Python怎么創建類
URL地址:http://www.yijiale78.com/article12/hgosdc.html
成都網站建設公司_創新互聯,為您提供域名注冊、網站收錄、移動網站建設、用戶體驗、網站營銷、網站內鏈
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯