python 函式def 和 類class 基礎

2021-09-29 19:26:39 字數 2910 閱讀 1628

函式def

'''

python 函式

def 函式名(引數列表):

函式體如果引數要指定資料型別,

引數名:資料型別

num : int

str1 : str

list1 : list

dict1 : dict

set1 : set

'''def

addnum

(a:int

, b:

int, c:

int)

:return a + b + c

defaddnum2

(a:int

, b:

int, c:

int)

: total = a + b + c

return

num = addnum(1,

2,3)

num2 = addnum2(1,

2,3)

print

(num)

# 6print

(num2)

# none

如果沒有return就沒有返回值,只寫return,返回none

'''

函式引數列表,可以設定不定長引數

def 函式名(arg1,*args) *args: 函式用元組接收引數

def 函式名(arg1,**args) **args: 函式用字典接收引數

* 和 ** 可以同時出現,不過*只能在**前面,不然會報錯

def 函式名(arg1,*,arg2,arg3,arg4) 表示: * 號之後的引數必須用字典型別傳入

'''def

para

(arg1,

*args)

:print

(arg1)

print

(args)

defpara1

(arg1,

**kwargs)

:print

(arg1)

print

(kwargs)

defpara2

(arg1,

*args,

**kwargs)

:print

(arg1)

print

(args)

print

(kwargs)

defpara3

(arg1,

*,arg2,arg3)

:print

(arg1)

print

(arg2)

print

(arg3)

para(1,

2,3,

4)para1(

1,a=

2,b=

3,c=4)

para2(1,

11,111,a=

2,b=

3,c=4)

para3(

1,arg2=

2,arg3=3)

'''1

(2, 3, 4)11

(11, 111)12

3'''

類class

'''

類用class標識

class 類名:

...class 類名(繼承類名): # python支援多繼承,

...有幾個名詞:

1. 方法解析順序(method resolution order),簡稱 mro

python 剛開始的時候多繼承方法解析順序採用了深度優先搜尋演算法(dfs),在python2.2版本,引入了

新式類,新式類在深度優先搜尋演算法的基礎上做了優化,但是類的解析順序不是單調性的,所以在python2.3版本,對新式類採用了c3演算法

class.mro(): 此方法可以被乙個元類來過載,用來解析類例項的解析順序,會在類例項化的時候呼叫,結果儲存於__mro__之中

class.__mro__: 此屬性是由類組成的元組,在方法解析期間會基於它來查詢基類

2. 新式類和舊式類

舊式類(經典類): python2.2之前的類都是經典類,宣告類的時候不用顯式的繼承object,採用的演算法是深度優先搜尋演算法

python2.2引入新式類,宣告類的時候顯式的繼承object,mro演算法採用c3演算法,在python2中,經典類mro

演算法還是深度優先,新式類則採用c3演算法

新式類: python3中,支援新式類,所以不論是否顯式的繼承了object,都是新式類,mro演算法都採用了c3演算法,廣度優先

'''classa:

defgetname

(self)

:print

('a'

)class

b(a)

:# def getname(self):

# print('b')

pass

class

c(a)

:def

getname

(self)

:print

('c'

)class

d(b, c, a)

:pass

''' a

/ | \

b | c

\ | /

d'''print

(d.mro())

d = d(

)d.getname(

)'''

廣度搜尋: 先在d中找,如果沒有,搜尋b,如果沒有,不會深入b的父類a,而是依次找c

[, , , , ]

b注釋掉b的getname之後,結果如下:

[, , , , ]

c'''

Python教程 def 函式

什麼是函式?函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段。函式能提高應用的模組性,和 的重複利用率。如何定義函式?任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。函式的第一行語句可以選擇性地使用文件字串 用於存放函式說明。函式內容以冒號起始,並且縮排。retur...

python學習之def函式

def函式就是對乙個新函式的自定義,有簡單的函式也有複雜的函式,以下列舉一些較為簡單的def使用方法。含有自變數的函式 def f x x x 2print x f 2 此處便為函式的呼叫 結果 4也可以寫成這樣 def f x y x 2print y f 2 此處便為函式的呼叫 結果 4不含有變...

Python學習之函式 def

目錄 簡單來說 函式 就是自己定義的一段 小程式 方便自己調取使用 def 用來定義函式的關鍵字 也就是這個函式的名字 函式執行到return的時候就會返回值 並且把函式內的引數全部清空 變數不再占用記憶體庫空間 退出函式 函式的格式如下就是 x是進入的引數,也可以不用輸入值,因為函式裡面全部的值都...