Kom igångKom igång gratis

Bästa praxis för standardargument

En av dina kollegor (som uppenbarligen inte gick den här kursen) har skrivit den här funktionen för att lägga till en kolumn i en pandas DataFrame. Tyvärr använde de en muterbar variabel som standardvärde för ett argument! Visa dem ett bättre sätt att göra det på, så att de slipper oväntat beteende.

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

Den här övningen är en del av kursen

Att skriva funktioner i Python

Visa kurs

Övningsinstruktioner

  • Ändra standardvärdet för df till ett omuterbart värde för att följa bästa praxis.
  • Uppdatera funktionskoden så att en ny DataFrame skapas om anroparen inte skickade in någon.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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
Redigera och kör kod