對高階函式的簡單認識

流浪的浪發表於2019-05-27

函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的程式碼段,能提高應用的模組性,和程式碼的重複利用率

1)函式的一般形式
函式定義:def 函式名()
函式呼叫:函式名()
定義函式的簡單規則:
函式程式碼塊以 def 關鍵詞開頭,後接函式識別符號名稱和圓括號(),函式名不能使用關鍵字。
任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。
函式內容以冒號起始,並且縮排。
return [表示式] 結束函式,選擇性地返回一個值給呼叫方。不帶表示式的return相當於返回 None。
# 定義函式
def sum(x,y):
  print('x={0}'.format(x))
  print('y={0}'.format(y))
  returnx+y
m = sum(10,3)#呼叫函式,引數值和引數名稱是按函式宣告中定義的的順序匹配起來的
#m = sum(x=10,y=3) #結果同上
print(m)

2)函式的引數
函式的引數按照定義和傳遞的情況時分為形式引數和實際引數。
在定義函式時,函式名後面括號中的變數名稱叫做形式引數,或者稱為形參。
在呼叫函式時,函式名後面括號中的變數名稱叫做實際引數,或者稱為實參。
*args和 **kwargs:*args對應的是元組,可接收多個引數;**kwargs對應的是字典,可接收多個為key=value形式的引數。
# 1.給b變數設定一個預設的值
# 如果實參傳入的時候,指定了b的值,那b優先選擇傳入的實參,當b沒有傳入值時才會使用預設值b=0,預設引數設定必須放在引數的最後
def funA(a,b=0):
print a
print b
funA(10)
執行結果如下:
10
0
# 2.引數為tuple
def funB(a,b,*c): #加了星號(*)的變數名會存放所有未命名的變數引數,並以元組的形式處理
print a
print b
print 'length of c is : %d' % len(c)
print c
funB(1,2,3,4,5,6)
執行結果如下:
1
2
length of c is : 4
(3, 4, 5, 6)
# 3.引數為dict
def funC(a,**b):
print a
print b
funC(100,x='hello',b='world')
執行結果如下:
100
{'x': 'hello', 'b': 'world'}

python 高階函式

函式本身也是可以作為一個引數傳入

>>> def f(x):
...     return x * x
...
>>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]

請注意我們定義的函式f。當我們寫f時,指的是函式物件本身,當我們寫f(1)時,指的是呼叫f函式,並傳入引數1,期待返回結果1。

因此,map()傳入的第一個引數是f,即函式物件本身。

map()函式這種能夠接收函式作為引數的函式,稱之為高階函式(Higher-order function)。

相關文章