函式定義:
defdef_name():
"""comments #文件描述(注釋)
"""expression
#語句塊
return value #
返回值
過程和函式的區別:過程是沒有返回值的函式
返回值問題:如果沒有返回值那麼返回none;如果方法的返回值中有多個返回值,那麼python將以元組的形式返回他們。(等價於返回乙個值)
引數呼叫:
1. 位置引數:實參與形參一一對應
2. 關鍵字引數:實參與形參順序無關
3. 預設引數:預設引數在函式呼叫時可以不用傳實參,系統將自動以預設值執行程式
4. 引數組:可以用於傳遞任意引數(引數組在形參中一定要後放)
1. *args:以元組的方式接收n個位置引數 例如:func(*args)
*args實參的傳遞:
1. 直接傳遞:func(1,2,3,4...)
2. func(*[1,2,3,4...])
2. **kwargs:以字典的方式接收n個關鍵字引數 例如:func(**kwargs)
**kwargs實參的傳遞:
1. 直接傳遞:func(key1 = val1,key2 = val2...)>>>key1、key2...必須是關鍵字
2. func(**)s
注:如果位置引數呼叫和關鍵字引數呼叫混搭,那麼按照位置與形參一一對應
關鍵字引數呼叫一定要在位置引數呼叫後面,否則會報錯
全域性變數和區域性變數:
在函式內的變數預設為區域性變數,在函式內修改對函式外同名變數不產生任何作用,如果想在函式內修改該全域性變數那麼要在函式內宣告該變數為乙個全域性變數而不是區域性變數 即:global val 在該語句後面再修改該變數那麼就是修改的全域性變數(全域性變數一定要在函式外部顯式地定義而不是在函式內部隱式定義》易出錯)
特殊情況:除了字串、整數在函式內部預設視作區域性變數,其餘複雜資料型別(列表、字典、集合、類)在函式內部是被視作全域性變數的(即複雜資料型別可以在函式內部直接對全域性值進行修改)
高階函式:將乙個函式作為實參傳給函式,返回值中包含該函式名(在另乙個函式中使用該函式),這就是高階函式 例如:
defadd(a,b,j):
return f(a) +f(b)
add(3,-6,abs) #
結果為9
匿名函式:匿名函式使用lambda關鍵字定義,注意,匿名函式只能處理簡單的邏輯(可以處理三元運算),如果邏輯過於複雜那麼系統會丟擲乙個錯誤
func = lambda n:n*nfunc(5)
#結果25
上面**等價於:
deffunc(n):
return n*n
func(5)
如果沒有變數結束匿名函式,那麼可以這樣呼叫匿名函式
(lambda n:n*n)(5)
Python基礎 函式
函式設計原則 函式有多種方法獲得輸入產生輸出,一般使用引數作為輸入,return語句配合可變引數的改變作為輸出。函式輸入 函式輸出 def fun args returndef語句 def建立了乙個函式物件並將其賦值給乙個變數。def語句是實時執行的,在模組匯入時執行或者在互動模式下輸入時執行。始終...
python基礎 函式
def funcname params return value 如果沒有return 最後會返回none,如果只寫return 會返回none 返回值個數為乙個,但是可以返回tuple,表面上返回多個值 def f1 return x,y x,y f1 def nop passdef functe...
Python 函式基礎
定義 函式是指將一組語句的集合通過乙個名字 函式名 封裝起來,要想執行這個函式,只需呼叫其函式名即可 為什麼使用函式 減少重複 使程式變的可擴充套件使程式變得易維護 1 定義乙個函式 2def func 使用def關鍵字定義函式 接函式名,括號內可以傳遞引數 3print hello world 函...