Beste Praxis für Standardargumente
Einer deiner Kollegen (der diesen Kurs offensichtlich nicht belegt hat) hat diese Funktion geschrieben, um eine Spalte zu einem Pandas DataFrame hinzuzufügen. Leider haben sie eine veränderbare Variable als Standardargumentwert verwendet! Bitte zeige ihnen einen besseren Weg, damit sie kein unerwartetes Verhalten zeigen.
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
df
in einen unveränderlichen Wert, um Best Practices zu folgen. - Aktualisiere den Code der Funktion, damit ein neuer DataFrame erstellt wird, wenn der Aufrufer keinen übergeben hat.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# 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