Python自定義函式基礎概念

2022-05-15 18:12:09 字數 3431 閱讀 7729

一、函式定義語法:

def 函式名(形參列表):

語句塊函式定義語句(def 語句) 的完整語法:

[@裝飾器1] [@裝飾器2] [...]

def 函式名([位置形參], [*元組形參], [命名關鍵字形參], [**字典形參]):

'''文件字串'''

語句塊

注: 中括號代表其內部可以省略

二、函式文件字串

函式內第一次未被賦值給任何變數的字串是此函式的文件字串。

說明:

1. 文件字串通常用來說明本函式的功能和使用方法

2. 在互動模式下輸入: help(函式名) 可以檢視函式的'文件字串'

3. 函式的文件字串繫結在函式的 __doc__ 屬性上

三、函式定義規則

1. 函式的名字就是語句塊的名稱   

2. 函式名的命名規則與變數名相同(函式名必須是識別符號)   

3. 函式名是乙個變數(不要輕易對其賦值)

4. 函式有自己的名字空間,在函式外部不可以訪問函式內部的變數,在函式內可以訪問函式外部的變數,但不能修改此變數。

5. 函式如果不需要傳入引數,形參列表可以為空

6. 語句塊部分,內容不能為空,如果為空需要填充pass 

四、形參定義方式

形參:函式呼叫時,接收呼叫時傳遞的資料

位置形參

關鍵字形參

預設引數

def 函式名(形參名=預設實參1, 形參名2=預設實參2, ...):

pass

預設引數必須自右至左依次存在,如果乙個引數是預設引數,則其右側的所有引數都必須是預設引數。

*args

星號元組形參,收集多餘的位置傳參

def 函式名(*元組形參名):

pass

**kwargs

雙星號字典形參,收集多餘的關鍵字傳參

def 函式名(**字典形參名):

pass

不定長形參

星號元組形參,雙星號字典形參

可以接受任意的位置傳參和關鍵字傳參

def fun(*args,**kwargs):

pass

位置形參,預設引數,星號元組形參,雙星號字典形參可以混合使用.

函式形參自左至右的順序為:

位置形參

星號元組形參

命名關鍵字形參

雙星號字典形參

五、函式呼叫

函式名(實參)

注:  

1. 函式呼叫是乙個表示式

2. 如果函式內部沒有return語句,函式呼叫完畢後返回none物件

3. 如果函式需要返回其它的物件需要用到 return 語句

4.函式名是乙個變數,繫結的是函式物件

六、函式呼叫時引數的傳遞形式

位置傳參

實參和形參的位置對應,將實參資料傳遞給函式形參。

實參和形參按位置一一對應。

實參個數和形參個數必須一致。

序列傳參

位置傳參的一種。

用 * 將序列拆解後按位置進行傳遞的傳參方式

關鍵字傳參

按形參的名稱將實參資料傳遞給形參。

實參和形參按形參名稱匹配。

字典關鍵字傳參

實參為字典,將字典用 '**' 拆解後再進行關鍵字傳參的傳參方式。

字典的鍵名必須和形參一致,切數量相同。

字典的鍵必須為字串。

七、全域性變數與區域性變數

全域性變數

① 定義在函式外部,模組內部的變數稱為全域性變數

② 全域性變數所有函式都可以直接訪問(但函式內不能將其直接賦值)

區域性變數

① 定義在函式內部的變數稱為區域性變數(函式的形參也是區域性變數)

② 區域性變數只能在函式內部使用

③ 區域性變數在函式呼叫時才能夠被建立,在函式呼叫之後會自動銷毀

八、函式的功能性

① 乙個函式可以作為另乙個函式呼叫時的實參,傳遞給此函式

def

f1():

print("

f1被呼叫")

deff2():

print("

f2被呼叫")

deffx(fn):

print

(fn)

fn()

#此時這是呼叫什麼呢?

fx(f1)

fx(f2)#結果

f1被呼叫

f2被呼叫

#---------------------

defgoodbye(l):

for x in

l:

print("

再見:"

, x)

defhello(l):

for x in

l:

print("

你好:"

, x)

defoperator(fn, l):

fn(l)

operator(hello, [

'tom

', '

jerry

', '

spike'])

#結果你好: tom

你好: jerry

你好: spike

② 乙個函式可以作為另乙個函式的返回值 

def

fx():

return

maxfn =fx()

print(fn([1, 3, 5, 7]))#結果

7

③ 函式可以巢狀

九、函式式程式設計

用一系列函式解決問題。

優點:用每乙個函式完成細小的功能,一系列函式的任意組合可以完成大問題

函式僅接受輸入並產生輸入,不包含任何能影響輸出的內部狀態

要求:def 語句建立的函式最好不要訪問區域性作用域以外的變數,這樣可以保證返回結果的唯一性(可重入性)

十、函式的 可重入性(結果唯一性)

如果乙個函式的輸入引數一定,則返回結果必須一定的函式稱為可重入函式

可重入函式,傳入引數一定.結果必然一定

def myadd(x, y):

return x + y     

不可重入函式:

y = 200

def myadd2(x):

return x + y

print(myadd2(10)) # 210

y = 300

print(myadd2(10)) # 310

Python基礎9 自定義函式

函式是組織好的可重複使用的,用來實現單一或相關聯功能的 段 函式能提高應用的模組性和 的重複利用率 python提供了許多內建函式,比如print 也可以自己建立函式,即自定義函式自定義函式的建立和呼叫 不帶引數的自定義函式 def sayhi print hi 呼叫函式 sayhi hi 帶引數的...

python基礎之函式(自定義函式)

函式 函式的定義 初中數學函式定義 一般的,在乙個變化過程中,如果有兩個變數x和y,並且對於x的每乙個確定的值,y都有唯一確定的值與其對應,那麼我們就把x稱為自變數,把y稱為因變數,y是x的函式。自變數x的取值範圍叫做這個函式的定義域,程式語言中函式定義 函式是邏輯結構化和過程化的一種程式設計方法。...

Python自定義函式

可選引數是python的乙個特性,顧名思義就是這個引數是可有可沒有的。如果你學過其他的語言,那麼你會很清楚明白他的不同點的。def fun n,m 1 s 1for i in range 1 n 1 s i return s m m就是可選引數,如果在呼叫他的時候不給m就預設為1 eg1 fun 1...