Inizia subitoInizia gratis

Buone pratiche per gli argomenti di default

Un tuo collega (che chiaramente non ha seguito questo corso) ha scritto questa funzione per aggiungere una colonna a un DataFrame di pandas. Purtroppo ha usato una variabile mutabile come valore predefinito di un argomento! Mostragli un modo migliore per farlo, così da evitare comportamenti imprevisti.

def add_column(values, df=pandas.DataFrame()):
  """Aggiunge una colonna di `values` a un DataFrame `df`.
  La colonna verrà chiamata "col_<n>" dove "n" è
  l'indice numerico della colonna.

  Argomenti:
    values (iterable): I valori della nuova colonna
    df (DataFrame, opzionale): Il DataFrame da aggiornare.
      Se non viene passato alcun DataFrame, ne viene creato uno per default.

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

Questo esercizio fa parte del corso

Scrivere funzioni in Python

Visualizza corso

Istruzioni dell'esercizio

  • Cambia il valore predefinito di df in un valore immutabile per seguire le buone pratiche.
  • Aggiorna il codice della funzione in modo che venga creato un nuovo DataFrame se chi la chiama non ne passa uno.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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
Modifica ed esegui il codice