值傳遞型別例如以下:
上面的**僅僅是將a的值作為引數傳遞進去。程式執行完之後a的值並未改變、
a = 1
def change_integer(a):
a = a + 1
return a
print( change_integer(a))
print (a)
結果:
21
引用傳遞的型別例如以下:
b = [1, 2, 3]
def change_list(b):
b[0]= b[0]+1
return b
print (change_list(b))
結果:
[2 ,2, 3]
python為了簡化函式的呼叫,提供了預設引數機制:
def pow(x, n = 2):
r = 1
while n > 0:
r *= x
n -= 1
return r
這樣在呼叫pow函式時,就可以省略最後乙個引數不寫:
print(pow(5))
結果:
25
def f(x):return x*2
f(3)g = lambda x:x2
g(3)
(lambda x:x2)(3)
def func (x,y):return x+y
func(1,2)
遞迴函式
在函式內部,可以呼叫其他函式。如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。
舉個例子,我們來計算階乘 n! = 1 * 2 * 3 * … * n,用函式 fact(n)表示,可以看出:
fact(n) = n! = 1 * 2 * 3 * … * (n-1) * n = (n-1)! * n = fact(n-1) * n
所以,fact(n)可以表示為 n * fact(n-1),只有n=1時需要特殊處理。
於是,fact(n)用遞迴的方式寫出來就是:
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
上面就是乙個遞迴函式。
python 函式高階 python 函式高階
形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...
Python高階 函式高階
閉包 closure 常規函式中可以在函式的引數中新增引數的預設值來簡化函式的操作,偏函式也可以做到這一點,而且會更加的方便管理函式的操作。通過內建模組functools的partial進行定義和處理 語法結構 新函式名稱 functools.partial 函式名稱,預設賦值引數 例如 全域性函式...
python 函式 高階函式
filter 函式是 python 內建的另乙個有用的高階函式,filter 函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如判斷奇偶數 def...