類似於管道,上一個函式處理完成的結果交給下一個函式,而不是一個函式套一個函式。
def subtract_federal_tax(df):
return df * 0.9
def subtract_state_tax(df, rate):
return df * (1 - rate)
def subtract_national_insurance(df, rate, rate_increase):
new_rate = rate + rate_increase
return df * (1 - new_rate)
# 函式一個套一個,閱讀性非常差
subtract_national_insurance(
subtract_state_tax(subtract_federal_tax(df), rate=0.12),
rate=0.05,
rate_increase=0.02)
改用 pipe,具體文件檢視 pandas.Series.pipe。
df.pipe(subtract_federal_tax)
.pipe(subtract_state_tax, rate=0.12)
.pipe(subtract_national_insurance, rate=0.05, rate_increase=0.02)
pipe 第一個引數傳遞函式,第二個引數 *args
為傳遞函式的引數列表。