1. 程式人生 > >零基礎入門Python3-函數式編程(1)

零基礎入門Python3-函數式編程(1)

高階函數 spa wid 字母 add pla std lin fun

函數式編程和函數編程是不一樣的。函數是對一段代碼進行封裝,使得函數達到某個功能或者結果。函數式編程,簡言之就是進行數字運算的一個過程。函數可以作為參數傳入另外的函數,其返回結果也可以是函數。

一、高階函數

1、什麽是高階函數?就是把函數作為參數傳入函數中。

# 實例1,我們看看函數的特性,變量可以指向函數

print(abs(-10))

>>> 10

# 這是一個內置函數,含義是獲取絕對值

# 如果我們只寫abs,不帶後面的括號會提示什麽?

abs

>>> <built-in function abs>

# 翻譯過來就是,內置函數abs。說明abs(-10)是函數的調用,abs是函數本身。

# 如果我們把函數本身賦值給另外的一個變量,會出現什麽情況?

a=abs

a

>>> <built-in function abs>

# 輸出的結果一樣,說明變量可以指向函數,同時函數可以賦值給變量。

# 那我們用指向函數的變量,對數字取絕對值。

print(a(-6))

>>> 6

# 這時,a 已經指向函數abs,同時,具備了abs的功能。

# 實例2,函數名就是變量

abs=666

print(abs(-6))

>>> Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: ‘int‘ object is not callable

# 顯然,abs已經指向了數字666,不在指向求絕對值的函數了。

2、map函數

map(func, *iterables)

- func代表的是調用的函數

- iterables代表的是叠代函數

- map 函數是把list中的每個元素都傳入到func函數中,取得運行結果。

# 實例1

def _abs(x):

return abs(x)

a=map(_abs,[1,-2,-3,4,-5])

list(a)

>>> [1,2,3,4,5]

# 首先定義函數_abs,作用為取數值的絕對值。接著利用map函數,把list 中的每個元素傳入到_abs 函數中,得到相應的絕對值。

# 實例2

def _int(x):

return int(x)

a=map(_int,[‘1‘,‘2‘,‘3‘,‘4‘,‘5‘])

print(list(a))

>>> [1, 2, 3, 4, 5]

# 把字符串轉化為數值。

# 實例3,利用map函數,把list中的元素變為首字母大寫,其他小寫的規範名字

def func(z):

i=1

_str=""

for j in z:

if i==1:

_str=j.upper()

else:

_str+=j.lower()

i+=1

return _str

print(list(map(func,[‘adam‘, ‘LISA‘, ‘barT‘])))

>>> [‘Adam‘, ‘Lisa‘, ‘Bart‘]

3、reduce函數

reduce函數就是對傳入的兩個參數進行運算,然後運算後的值作為下次參數的其中一個。

reduce(function, sequence[, initial]) -> value

# 實例,計算1,2,3...9的和

from functools import reduce

def _add(x,y):

return x+y

print(reduce(_add,[1,2,3,4,5,6,7,8,9]))

>>> 45

# 取出list 中的兩個數值,帶入_add 函數,計算出的結果作為下一次的一個參數,直到計算完畢。

# 實例2,求 list [3, 5, 7, 9] 中的積

from functools import reduce

def func(a,b):

return a*b

print(reduce(func,[3, 5, 7, 9]))

>>> 945

技術分享圖片

關註公眾號,了解更多!

零基礎入門Python3-函數式編程(1)