帶着函數的函數,真說是神奇的很數據庫
**********編程
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路由