ПочатиПочніть безкоштовно

Найкраща практика для значень аргументів за замовчуванням

Один із ваших колег (який, очевидно, не проходив цей курс) написав цю функцію для додавання стовпця до pandas DataFrame. На жаль, він використав змінну, що змінюється, як значення аргументу за замовчуванням! Будь ласка, покажіть кращий підхід, щоб уникнути неочікуваної поведінки.

def add_column(values, df=pandas.DataFrame()):
  """Додати стовпець `values` до DataFrame `df`.
  Назву стовпця буде встановлено як "col_<n>", де "n" —
  числовий індекс стовпця.

  Args:
    values (iterable): Значення нового стовпця
    df (DataFrame, optional): DataFrame для оновлення.
      Якщо DataFrame не передано, за замовчуванням його буде створено.

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

Ця вправа є частиною курсу

Написання функцій у Python

Переглянути курс

Інструкції до вправи

  • Змініть значення за замовчуванням для df на незмінюване, дотримуючись найкращих практик.
  • Оновіть код функції так, щоб створювався новий DataFrame, якщо викликаючий код його не передав.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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
Редагувати та запускати код