CommencezCommencez gratuitement

Bonne pratique pour les arguments par défaut

Une de vos collègues (qui clairement n'a pas suivi ce cours) a écrit cette fonction pour ajouter une colonne à un DataFrame pandas. Malheureusement, elle a utilisé une variable mutable comme valeur par défaut d'un argument ! Montrez-lui une meilleure façon de faire afin d'éviter un comportement inattendu.

def add_column(values, df=pandas.DataFrame()):
  """Ajouter une colonne `values` à un DataFrame `df`.
  La colonne sera nommée « col_<n> » où « n » est
  l'indice numérique de la colonne.

  Args:
    values (iterable): Les valeurs de la nouvelle colonne
    df (DataFrame, optional): Le DataFrame à modifier.
      Si aucun DataFrame n'est fourni, un DataFrame est créé par défaut.

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

Cette activité fait partie du cours

Écrire des fonctions en Python

Voir le cours

Instructions de l’exercice

  • Remplacez la valeur par défaut de df par une valeur immuable afin de respecter les bonnes pratiques.
  • Modifiez le code de la fonction pour créer un nouveau DataFrame si l'appelant n'en a pas fourni un.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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
Modifier et exécuter le code