Buenas prácticas para los argumentos por defecto
Uno de tus compañeros de trabajo (que obviamente no ha hecho este curso) ha escrito esta función para añadir una columna a un DataFrame de pandas. Por desgracia, ¡usaron una variable mutable como valor del argumento por defecto! Por favor, enséñales una forma mejor de hacerlo para que no tengan comportamientos inesperados.
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
Este ejercicio forma parte del curso
Escribir funciones en Python
Instrucciones de ejercicio
- Cambia el valor por defecto de
df
a un valor inmutable para seguir las mejores prácticas. - Actualiza el código de la función para que se cree un nuevo DataFrame si el que llama no ha pasado ninguno.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# 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