一、將函式作為變數去使用
在python中函式也是一種物件,是一種名為function的物件,所以可以將函式賦值給變數,類似整數、浮點數、列表、元組、字典賦值給變數。
我們編寫如下程式:
1執行程式之後控制台列印如下:#coding=utf-8
2def
power(base,exponent):
3"""
定義函式:計算乘方
"""4 result = 1
5for i in range(1,exponent + 1):
6 result *=base
7return
result
89 my_function =power
10print(my_function(2,3))
解釋:我們先定義了乙個函式名為power作用就是用來計算乘方,第乙個引數為底數,第二個引數為指數,第9行,我們將power() 函式賦值給變數my_pow,所以在第10行我們就可以用my_pow呼叫power() 函式了,有此可見,我們可以在程式不同的時間或者位置將my_function指向其他已定義過的函式進行呼叫,從而使程式更加靈活的執行,所以這是使用函式變數的一大好處。
二、將函式作為乙個函式的形參
有時候定義乙個這樣的函式:該函式大部分計算邏輯都能確定,但是有些處理邏輯無法確定,所以某些程式**需要根據具體情況改變,此時我們可以使用函式形參來解決,這樣就可以在呼叫函式時傳入不同函式作為引數,從而動態改變這段**。
我們編寫如下的栗子:
1在執行程式後,控制台列印如下:#coding=utf-8
2def
funcs(data,fn):
3"""
fn形參為函式型別即是function型別
"""4 result=
5for x in
data:
在將data中的元素遍歷、計算後放入新陣列
7return
result89
defsquare(x):
10"""
計算乙個數的平方並返回
"""11
return x*x
1213
defcube(x):
14"""
計算乙個數的三次方並返回
"""15
return x*x*x
1617
deffactorial(x):
18"""
計算乙個數的階乘並返回
"""19 result = 1
20for index in range(2,x+1):
21 result *=index
22return
result
2324 data = [2,3,4,9,8,7]
25print("
原資料:
", data)26#
在傳入不同的函式物件給funcs函式後會得到不同的結果
27print("
計算列表元素的平方:")
28print
(funcs(data,square))
29print("
計算列表元素的三次方:")
30print
(funcs(data,cube))
31print("
計算列表元素的階乘:")
32print
(funcs(data,factorial))
33print("
funcs函式的型別:")
34print(type(funcs))
從上面的例子中,可以看出函式可以作為引數,在呼叫函式時動態傳入,這樣即使資料是相同的,但實際呼叫的函式不同。在第34行,我們列印了funcs函式的型別,是function型別即function物件。
三、將函式作為另乙個函式的返回值
將上面的**稍作改變即可:
1執行程式,控制台列印如下:#coding=utf-8
2def
get_funcs(func_name):34
5def
square(x):
6"""
計算乙個數的平方並返回
"""7
return x*x89
defcube(x):
10"""
計算乙個數的三次方並返回
"""11
return x*x*x
1213
deffactorial(x):
14"""
計算乙個數的階乘並返回
"""15 result = 1
16for index in range(2,x+1):
17 result *=index
18return
result
19"""
根據傳入func_name返回區域性函式
"""20
if func_name == "
square":
21return
square
22elif func_name == "
cube":
23return
cube
24else:25
return
factorial
262728#
在傳入不同的引數名給funcs函式後會得到不同的函式物件
29print("
計算數字4的平方:")
30 my_funct = get_funcs("
square")
31print(my_funct(4))
32print("
計算數字5的三次方:")
33 my_funct = get_funcs("
cube")
34print(my_funct(5))
35print("
計算數字6的階乘:")
36 my_funct = get_funcs("
other_function")
37print(my_funct(6))
解釋:在定義了返回函式的函式get_funcs() 後,在呼叫該函式時直接傳入你需要呼叫的函式名即可返回你需要的函式,用變數接收即可使用,如上面的**。
Python中的函式(高階使用)
一 將函式作為變數去使用 在python中函式也是一種物件,是一種名為function的物件,所以可以將函式賦值給變數,類似整數 浮點數 列表 元組 字典賦值給變數。我們編寫如下程式 coding utf 8 defpower base,exponent 定義函式 計算乘方 result 1for ...
python 高階函式的使用
1.變數是可以指向函式的!abs 是內建函式 if name main print abs 8 f abs 變數指向於函式 print f 9 結果89 2.函式名其實就是指向函式的乙個變數 例如 如果把這個內建函式指向於另外的函式,就無法使用了,見下 print 函式名 abs abs len a...
Python高階函式的使用
又被稱之為匿名函式 格式 lambda 引數列表 函式體 def add x,y return x y print add 3,4 output 7add lambda lambda x,y x y add lambda 3,4 output 7三元運算子通常在python裡被稱為條件表示式,這些表...