ComenzarEmpieza gratis

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

Ver curso

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
Editar y ejecutar código