
32
∣ 第二章:Python 速成班
from functools import partial
two_to_the = partial(exp, 2) # 現在變成了只有一個變數的函式
print two_to_the(3) # 8
只要指定名稱,你就可以讓
partial
指定後面的那個參數值:
square_of = partial(exp, power=2)
print square_of(3) # 9
如果你指定的是介於中間的參數值,情況會變得比較容易出現混淆,所以我們會盡量
避免這種做法。
我們偶爾也會使用到
map
、
reduce
和
filter
這幾個工具。比如說,下面是解析式列表幾
種不同的函式做法:
def double(x):
return 2 * x
xs = [1, 2, 3, 4]
twice_xs = [double(x) for x in xs] # [2, 4, 6, 8]
twice_xs = map(double, xs) # 結果同上
list_doubler = partial(map, double) # 可將列表中每個元素值加倍的函式
twice_xs = list_doubler(xs) # 結果同樣是 [2, 4, 6, 8]
只要提供多個列表,也可以將
map
運用於需要多個參數的函式中:
def multiply(x, y): return x * y
products = map(multiply, [1, 2], [4, 5]) # [1 * ...