Meilleure pratique pour les arguments par défaut
L'un de vos collègues (qui n'a manifestement pas suivi ce cours) a écrit cette fonction pour ajouter une colonne à un DataFrame pandas. Malheureusement, ils ont utilisé une variable mutable comme valeur d'argument par défaut ! Veuillez leur indiquer une meilleure façon de procéder afin qu'ils n'aient pas un comportement inattendu.
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
Cet exercice fait partie du cours
Écrire des fonctions en Python
Instructions
- Remplacez la valeur par défaut de
df
par une valeur immuable afin de respecter les meilleures pratiques. - Mettez à jour le code de la fonction afin qu'un nouveau DataFrame soit créé si l'appelant n'en a pas transmis un.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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