Apa masalah yang dipecahkan oleh fitur baru python 3? [Tutup]

18

Python 3 fitur baru mengatakan:

kami sebagian besar memperbaiki gangguan dan kutil yang terkenal, dan menghapus banyak cruft tua

Itu menyebutkan apa yang berbeda (perbaikan) tetapi tidak mengapa (masalah). Saya belum menemukan apa masalahnya. Apa masalah yang dipecahkan oleh perbaikan?

pengguna712092
sumber
1
Namun satu kutil, mereka tidak menghapus, adalah alasan untuk harus lulus 'diri' ke metode kelas. Kereta gagal.
Rig

Jawaban:

11

Saya hanya akan menyebutkan nama yang muncul di pikiran segera.

  • Argumen khusus kata kunci: Dijelaskan dalam alasan PEP.
  • nonlocal: Tanpa ini, penutupan tidak bisa menimpa variabel yang ditutup. Kebutuhan ini muncul dari waktu ke waktu dengan dekorator dan fungsi tingkat tinggi lainnya. Satu-satunya solusi yang masuk akal (tanpa beralih API eksternal), menyimpan keadaan apa pun yang bisa berubah yang Anda inginkan dalam objek yang bisa berubah, sangat jelek.
  • Kamus dan kumpulan pemahaman: Membuat kamus dan mengatur dengan cara yang mirip dengan daftar pemahaman kurang cantik dan sedikit lebih lambat bila dilakukan melalui pemahaman generator. Ini memungkinkan kami untuk menggunakan jenis ini di tempat yang sesuai, tanpa biaya tambahan. Ditto untuk mengatur literal, terutama untuk intes (seperti Python 3.2, ini juga dioptimalkan oleh pengoptimal lubang intip).
  • Literal oktal ada dalam Python 2, tetapi 0777notasi adalah jebakan bagi mereka yang tidak terbiasa (dalam konteks lain, menambahkan nol perubahan terkemuka baik nilai maupun basis).
  • Binary literals berguna untuk mengutak-atik bit, bahkan lebih dari sekadar heksadesimal literal.
  • Literal byte adalah gejala perbedaan yang dipaksakan antara string unicode dan string byte, dan string literal menjadi unicode. Perubahan ini memaksa Anda untuk memikirkan perbedaan antara teks dan data biner yang tidak diinterpretasikan dan tentang penyandian. Hal ini penting karena jika tidak, Anda perlu pengujian ekstensif (dengan masukan kami yang berbahasa Inggris, orang Eropa-Amerika-sentris yang jarang dipikirkan) untuk menemukan kesalahan terkait penyandian.
  • except ex, var-> except ex as varmemperbaiki kesalahan umum except ValueError, IndexError(harus menangkap keduanya, tetapi hanya menangkap yang pertama dan menimpa nama IndexErrordengan pengecualian yang tertangkap).
  • Lingkup pemahaman daftar: Hindari mencemari ruang nama, dan biarkan memikirkannya dalam hal ekspresi generator.
  • Sintaks dan modul yang dihapus: Bawa kami lebih dekat ke "Seharusnya ada satu - dan lebih baik hanya satu - cara yang jelas untuk melakukannya." dan menghindari orang-orang dengan tutorial yang buruk mengikuti cara lama & rusak memperbaiki hal-hal.

sumber