一、函式定義語法:
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.函式名是乙個變數,繫結的是函式物件
六、函式呼叫時引數的傳遞形式
位置傳參
實參和形參的位置對應,將實參資料傳遞給函式形參。
實參和形參按位置一一對應。
實參個數和形參個數必須一致。
序列傳參
位置傳參的一種。
用 * 將序列拆解後按位置進行傳遞的傳參方式
關鍵字傳參
按形參的名稱將實參資料傳遞給形參。
實參和形參按形參名稱匹配。
字典關鍵字傳參
實參為字典,將字典用 '**' 拆解後再進行關鍵字傳參的傳參方式。
字典的鍵名必須和形參一致,切數量相同。
字典的鍵必須為字串。
七、全域性變數與區域性變數
全域性變數
① 定義在函式外部,模組內部的變數稱為全域性變數
② 全域性變數所有函式都可以直接訪問(但函式內不能將其直接賦值)
區域性變數
① 定義在函式內部的變數稱為區域性變數(函式的形參也是區域性變數)
② 區域性變數只能在函式內部使用
③ 區域性變數在函式呼叫時才能夠被建立,在函式呼叫之後會自動銷毀
八、函式的功能性
① 乙個函式可以作為另乙個函式呼叫時的實參,傳遞給此函式
deff1():
print("
f1被呼叫")
deff2():
print("
f2被呼叫")
deffx(fn):
(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
② 乙個函式可以作為另乙個函式的返回值
deffx():
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...