Best Practice für Standardargumente
Ein Kollege (der diesen Kurs offensichtlich noch nicht gemacht hat) hat diese Funktion geschrieben, um eine Spalte zu einem pandas-DataFrame hinzuzufügen. Leider wurde dabei eine veränderbare Variable als Standardwert für ein Argument verwendet! Bitte zeige ihm eine bessere Vorgehensweise, damit kein unerwartetes Verhalten auftritt.
def add_column(values, df=pandas.DataFrame()):
"""Add a column of `values` to a DataFrame `df`.
The column will be named "col_<n>" 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
"""
df['col_{}'.format(len(df.columns))] = values
return df
Diese Übung ist Teil des Kurses
Funktionen in Python schreiben
Anleitung zur Übung
- Ändere den Standardwert von
dfauf einen unveränderbaren Wert, um Best Practices zu befolgen. - Aktualisiere den Code der Funktion so, dass ein neuer DataFrame erstellt wird, falls beim Aufruf keine übergeben wurden.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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