Fitur-fitur baru Python 3.8 dan saatnya untuk meningkatkan ke Python 2

2020 telah datang, yang berarti bahwa Python 2 tidak lagi didukung . Tepatnya, pengembang utama sudah berhenti bekerja di cabang, dan rilis rilis 2.7.18, didedikasikan untuk PyCon US pada April 2020, akan menandai penghentian total aktivitas apa pun yang terkait dengan Python 2.


Di sisi lain, rilis terbaru Python 3.8 terjadi, menambahkan sedikit sintaksis bahasa. Python 3.9, bagaimanapun, belum diharapkan segera , namun sepertinya tidak menambahkan sesuatu yang menarik untuk bahasa.


Jadi jika Anda belum tiba-tiba meninggalkan Python 2, maka tidak ada gunanya menarik: dukungan untuk versi kedua sudah berhenti, dan transisi segera ke 3,8 akan memungkinkan Anda untuk menggunakan bahasa dalam keadaan saat ini untuk waktu yang lama.


Nah, untuk membuatnya lebih mudah untuk memutuskan, berikut ini adalah ikhtisar dari inovasi utama Python 3.8, yang akan berguna bagi setiap pythonist.


1. Ekspresi penugasan


Juga dikenal sebagai operator walrus, sintaks baru yang memungkinkan Anda untuk menetapkan nilai ke variabel di dalam ekspresi lain. Ini mungkin yang paling terkenal dan dibahas dari inovasi versi 3.8.


a = 6 #    b  a ** 2 #  ,  b > 0 if (b := a ** 2) > 0: print(f' {a}  {b}.') #  6  36. 

Tujuan dari memperkenalkan operator adalah untuk meningkatkan keterbacaan kode, jadi menggunakannya (seperti semua operator lain) tidak diperlukan pada kesempatan pertama, tetapi hanya jika sesuai.


 #     a = 5 d = [b := a+1, a := b-1, a := a*2] 

2. Hanya argumen posisi


Fungsinya dapat mengambil dua jenis argumen.


  • Posisi - ditransmisikan oleh posisi
  • Bernama - melewati nama

Dalam kode di bawah ini, nilai argumen a dan b dapat dilewati dengan posisi dan nama.


 def my_func(a, b=1): return a+b my_func(5,2) #    my_func(a=5, b=2) #    

Dalam versi baru Python, Anda dapat secara eksplisit membatasi parameter mana yang hanya bisa posisional atau hanya dinamai menggunakan karakter / dan * dalam tanda tangan fungsi (yang terakhir, bagaimanapun, muncul sebelum Python 3.8).


Dalam contoh di bawah ini, dua parameter pertama a dan b hanya posisional, c dan d dapat berupa apa saja, dan dua terakhir e dan f harus dinamai.


 def my_func(a, b, /, c, d, *, e, f): return a+b+c+d+e+f my_func(1, 2, 3, 4, 5, 6) # : e, f    my_func(a=1, b=2, 3, 4, e=5, f=6) # : a, b    my_func(1, 2, c=3, 4, e=5, f=6) # returns 21 my_unc(1, 2, c=3, d=4, e=5, f=6) # returns 21 

Mengapa membatasi fleksibilitas jenis argumen? Dalam beberapa kasus, menggunakan nama parameter alih-alih posisinya akan sia-sia dan tidak pantas. Pembatasan juga akan menghindari masalah jika Anda berencana untuk mengubah nama argumen posisi di masa depan.


3. f-lines 2.0


Sulit untuk menggambarkan dengan kata-kata betapa lebih mudah dan lebih elegannya format f-line yang muncul di Python 3.6.


Sulit dipercaya, tetapi Python 3.8 berhasil membuatnya lebih nyaman. Dengan menambahkan tanda = setelah nama variabel yang diganti, Anda dapat menampilkan nama dan nilainya tanpa menduplikasi nama.


 pi = 3 #        print(f'pi={pi}') #     print(f'{pi=}') #      

Debug dengan cetakan akan lebih nyaman :)


4. Urutan terbalik dari entri kamus


Iterating over dictionary sekarang dapat dilakukan secara terbalik menggunakan terbalik () .


5. Memperoleh metadata dari modul lain


Modul importlib.metadata baru akan memungkinkan Anda untuk mendapatkan metadata (misalnya, versi) dari paket pihak ketiga.


6. akhirnya + melanjutkan


Sebelumnya, Anda tidak dapat menggunakan pernyataan lanjut di dalam akhirnya karena kesulitan dalam mengimplementasikan fitur ini. Sekarang kamu bisa.


 for i in range(2): try: print(i) finally: print('.') continue print('    .') # Python <= 3.7 >> SyntaxError: 'continue' not supported inside 'finally' clause # Python 3.8 >> 0 . 1 . 

Source: https://habr.com/ru/post/id483276/


All Articles