2
雖然在Udacity的Intro to data analysis課程上工作,但我偶然發現了以下情況。在編寫下面的函數時,我沒有意識到我將輔助函數standardize(series)
命名爲主函數standardize(df)
。令我驚訝的是,該功能運行良好。與主功能名稱相同的助手功能?
當我在df.apply(standardize)
中使用它時,解釋器如何知道使用哪個版本的標準化函數?它與參數類(系列vs df)有什麼關係?爲什麼不嘗試使用遞歸?或者如果是這樣,我似乎無法概念化如何逐步解決問題。
grades_df = pd.DataFrame(
data={'exam1': [43, 81, 78, 75, 89, 70, 91, 65, 98, 87],
'exam2': [24, 63, 56, 56, 67, 51, 79, 46, 72, 60]},
index=['Andre', 'Barry', 'Chris', 'Dan', 'Emilio',
'Fred', 'Greta', 'Humbert', 'Ivan', 'James']
)
def standardize(df):
'''
Fill in this function to standardize each column of the given
DataFrame. To standardize a variable, convert each value to the
number of standard deviations it is above or below the mean.
'''
def standardize(series):
return (series - series.mean())/series.std(ddof = 0)
return df.apply(standardize)
standardize(grades_df)
嵌套函數會遮蔽它嵌套的函數。它會正常工作,但似乎不必要的混淆。 – jonrsharpe
作爲建議,您可以改爲命名內部函數_standardize。這是我的正常習慣。 –