Python 函數式編程介紹

 

 

帶着函數的函數,真說是神奇的很數據庫

 

函數式編程

 

 **********編程

map(函數名,List):函數帶一個參數閉包

def f(x):
return x*x
print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
輸出結果:函數式編程

[1, 4, 9, 10, 25, 36, 49, 64, 81]函數

 

**********
reduce(函數名,List):函數帶倆參數
reduce(函數名,List,初始值)
def f(x, y):
return x + y
print reduce(f, [1, 3, 5, 7, 9])post

輸出結果:性能

[25]日誌

 

********** code

def f(x, y):
return x + y
print reduce(f, [1, 3, 5, 7, 9],10)orm

輸出結果:

[35]

 

 **********

strip()默認刪除空白符(包括'\n', '\r', '\t', ' '),以下:
a=' \t\t 123\r\n'
a.strip()
結果:'123'

 

 ************

filter(函數名,List)這個函數 f 的做用是對每一個元素進行判斷,返回 True或 False,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。
首先,要編寫一個判斷奇數的函數:

def is_odd(x):
return x % 2 == 1
而後,利用filter()過濾掉偶數:

filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
結果:[1, 7, 9, 17]

 

**************

sorted()函數可對list進行排序,從小到大

sorted()也能夠對字符串進行排序,字符串默認按照ASCII大小來比較

sorted(List,函數名):能夠實現自定義排序。對於sorted(x,y),若是 x 應該排在 y 的前面,返回 -1,若是 x 應該排在 y 的後面,返回 1。若是 x 和 y 相等,返回 0。

 

**************
函數能夠返回函數值也能夠返回函數名(return f()——return f)

 

**************

內層函數引用了外層函數的變量(參數也算變量),而後返回內層函數的狀況,稱爲閉包(Closure)

當內部參數發生改變,函數返回值也就變了。

 

************

匿名函數 lambda  x:f(x)

例: lambda x: x * x 實際上就是:

def f(x):
    return x * x

關鍵字lambda 表示匿名函數,冒號前面的 x 表示函數參數。

匿名函數有個限制,就是隻能有一個表達式,不寫return,返回值就是該表達式的結果。

使用匿名函數,能夠沒必要定義函數名,直接建立一個函數對象,不少時候能夠簡化代碼。但無法提升效率。

 

************

 函數名.__name__  返回函數名

好比高階函數調用函數做爲參數,能夠用.__name__顯示調用的函數名

 

************

裝飾函數:(這個真的很神奇,我都沒想到一個圈A居然這麼有用)

在指定函數上寫一個  @XXXXX 簡化代碼,實現相關功能

@log——打印日誌

@performance——檢測性能

@transaction——數據庫事務

@post('/register/')——URL路由

相關文章
相關標籤/搜索