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