LoslegenKostenlos loslegen

Best Practice für Standardargumente

Eine Kollegin oder ein Kollege (der diesen Kurs offensichtlich nicht gemacht hat) hat diese Funktion geschrieben, um eine Spalte zu einem pandas-DataFrame hinzuzufügen. Leider wurde dabei eine veränderliche Variable als Standardwert für ein Argument verwendet! Bitte zeig eine bessere Vorgehensweise, damit kein unerwartetes Verhalten auftritt.

def add_column(values, df=pandas.DataFrame()):
  """Fügt eine Spalte `values` zu einem DataFrame `df` hinzu.
  Die Spalte heißt "col_<n>", wobei "n"
  der numerische Index der Spalte ist.

  Args:
    values (iterable): Die Werte der neuen Spalte
    df (DataFrame, optional): Das zu aktualisierende DataFrame.
      Wenn kein DataFrame übergeben wird, wird standardmäßig eines erstellt.

  Returns:
    DataFrame
  """
  df['col_{}'.format(len(df.columns))] = values
  return df

Diese Übung ist Teil des Kurses

Funktionen in Python schreiben

Kurs anzeigen

Anleitung zur Übung

  • Ändere den Standardwert von df auf einen unveränderlichen Wert, um Best Practices zu befolgen.
  • Aktualisiere den Code der Funktion so, dass ein neues DataFrame erstellt wird, falls der Aufrufer keines übergeben hat.

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
Code bearbeiten und ausführen