LoslegenKostenlos starten

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>
Kurs ansehen

Übungsanweisungen

  • Ändere den Standardwert von df auf 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
Code bearbeiten und ausführen