MulaiMulai sekarang secara gratis

Praktik terbaik untuk argumen default

Salah satu rekan kerja Anda (yang jelas belum mengambil kursus ini) menulis fungsi untuk menambahkan kolom ke pandas DataFrame. Sayangnya, ia menggunakan variabel yang dapat diubah sebagai nilai argumen default! Tunjukkan cara yang lebih baik agar mereka tidak mendapatkan perilaku yang tidak terduga.

def add_column(values, df=pandas.DataFrame()):
  """Tambahkan satu kolom `values` ke DataFrame `df`.
  Kolom akan diberi nama "col_<n>" di mana "n" adalah
  indeks numerik kolom tersebut.

  Args:
    values (iterable): Nilai untuk kolom baru
    df (DataFrame, optional): DataFrame yang akan diperbarui.
      Jika tidak ada DataFrame yang diberikan, satu akan dibuat secara default.

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

Latihan ini adalah bagian dari kursus

Menulis Function di Python

Lihat Kursus

Petunjuk latihan

  • Ubah nilai default df menjadi nilai yang tidak dapat diubah (immutable) untuk mengikuti praktik terbaik.
  • Perbarui kode fungsi sehingga DataFrame baru dibuat jika pemanggil tidak memberikannya.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# 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
Edit dan Jalankan Kode