Найкраща практика для значень аргументів за замовчуванням
Один із ваших колег (який, очевидно, не проходив цей курс) написав цю функцію для додавання стовпця до 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