IniziaInizia 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 il 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 pratico interattivo

Prova a risolvere questo esercizio completando il 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