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
<Kurs>Funktionen in Python schreiben</Kurs>Übungsanweisungen
- Ä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 praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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