Varsayılan argümanlar için en iyi uygulama
Takım arkadaşlarından biri (belli ki bu dersi almamış) bir pandas DataFrame'ine sütun eklemek için bu fonksiyonu yazmış. Ne yazık ki, varsayılan argüman değeri olarak değiştirilebilir bir değişken kullanmış! Lütfen onlara bunun daha doğru yolunu göster ki beklenmedik davranışlarla karşılaşmasınlar.
def add_column(values, df=pandas.DataFrame()):
"""`values` sütununu `df` adlı DataFrame'e ekle.
Sütunun adı, "n" sütunun sayısal indeksini gösterecek şekilde
"col_<n>" olacaktır.
Args:
values (iterable): Yeni sütunun değerleri
df (DataFrame, optional): Güncellenecek DataFrame.
Herhangi bir DataFrame verilmezse, varsayılan olarak bir tane oluşturulur.
Returns:
DataFrame
"""
df['col_{}'.format(len(df.columns))] = values
return df
Bu egzersiz
Python'da Fonksiyon Yazımı
kursunun bir parçasıdırEgzersiz talimatları
- En iyi uygulamalara uymak için
df'nin varsayılan değerini değiştirilemez bir değere çevir. - Çağıran bir DataFrame vermediyse yeni bir DataFrame oluşturulacak şekilde fonksiyonun kodunu güncelle.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# Use an immutable variable for the default argument
def better_add_column(values, df=____):
"""Add a column of `values` to a DataFrame `df`.
The column will be named "col_" where "n" is
the numerical index of the column.
Args:
values (iterable): The values of the new column
df (DataFrame, optional): The DataFrame to update.
If no DataFrame is passed, one is created by default.
Returns:
DataFrame
"""
# Update the function to create a default DataFrame
if ____ is ____:
df = pandas.DataFrame()
df['col_{}'.format(len(df.columns))] = values
return df