Aan de slagGa gratis aan de slag

Best practice voor standaardargumenten

Een van je collega’s (die deze cursus duidelijk niet heeft gevolgd) heeft deze functie geschreven om een kolom toe te voegen aan een pandas DataFrame. Helaas hebben ze een muteerbare variabele als standaardwaarde voor een argument gebruikt! Laat alsjeblieft zien hoe dit beter kan, zodat ze geen onverwacht gedrag krijgen.

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

Deze oefening maakt deel uit van de cursus

Functies schrijven in Python

Cursus bekijken

Oefeninstructies

  • Verander de standaardwaarde van df naar een immuteerbare waarde om best practices te volgen.
  • Pas de code van de functie aan zodat er een nieuw DataFrame wordt gemaakt als de aanroeper er geen heeft doorgegeven.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren