Προγραμματισμός

Python 3.9: Τι νέο υπάρχει και καλύτερο

Το Python 3.9, που κυκλοφόρησε σήμερα, παρουσιάζει σημαντικές αλλαγές τόσο στα χαρακτηριστικά της γλώσσας όσο και στον τρόπο ανάπτυξης της γλώσσας. Η Python γνώρισε μεγάλη δημοτικότητα τα τελευταία χρόνια και η χρήση της εξερράγη σε ταχέως εξελισσόμενους τομείς όπως η επιστήμη των δεδομένων και η μηχανική μάθηση. Το έργο εργάζεται σκληρά για να συμβαδίσει με όλες τις νέες απαιτήσεις.

Ακολουθεί μια συνοπτική παρουσίαση όλων των μεγάλων νέων δυνατοτήτων στο Python 3.9.

Η Python μεταβαίνει σε έναν ετήσιο κύκλο απελευθέρωσης

Μέχρι αυτό το σημείο, η Python έχει αναπτυχθεί και κυκλοφόρησε με ρυθμό δεκαοκτώ μηνών. Το PEP 602 πρότεινε να υιοθετήσει η ομάδα ανάπτυξης του Python έναν ετήσιο κύκλο κυκλοφορίας και η πρόταση αυτή έγινε δεκτή.

Ένας ετήσιος κύκλος κυκλοφορίας σημαίνει λιγότερες δυνατότητες ανά κυκλοφορία, αλλά σημαίνει επίσης ταχύτερη ανατροφοδότηση σχετικά με τη δοκιμή λειτουργιών, λιγότερες δυνητικά σπάνιες αλλαγές για κάθε κυκλοφορία και, επομένως, περισσότερο κίνητρο για τους χρήστες και τους διαχειριστές διανομής Linux να αναβαθμίζουν πιο συχνά το Python. Σημαίνει επίσης ότι οι νέες δυνατότητες που προτείνονται αργά στον κύκλο ανάπτυξης δεν θα χρειαστούν πολύ χρόνο για να μεταφερθούν σε μια νέα κυκλοφορία.

Το νέο χρονοδιάγραμμα σημαίνει ότι το Python 3.9 θα κυκλοφορήσει τον Οκτώβριο του 2020. Το Python 3.10 ξεκίνησε επίσημα την προ-άλφα ανάπτυξη στις 19 Μαΐου 2020, θα εισέλθει στη φάση ανάπτυξης άλφα όταν το Python 3.9 θα κυκλοφορήσει και θα αποσταλεί τον Οκτώβριο του 2021. Οι μελλοντικές εκδόσεις Python θα ακολουθήσουν ίδιο μοτίβο.

Η Python γίνεται ταχύτερη από προεπιλογή

Κάθε αναθεώρηση του Python απολαμβάνει βελτιώσεις απόδοσης σε σχέση με την προηγούμενη έκδοση. Το Python 3.9 κυκλοφορεί σε δύο μεγάλες βελτιώσεις που ενισχύουν την απόδοση χωρίς να απαιτούν αλλαγές στον υπάρχοντα κώδικα.

Η πρώτη βελτίωση περιλαμβάνει περισσότερη χρήση του διάνυσμα κλήση πρωτόκολλο που εισήχθη στο Python 3.8. διάνυσμα κλήση πραγματοποιεί γρηγορότερα πολλές κοινές λειτουργίες, ελαχιστοποιώντας ή εξαλείφοντας προσωρινά αντικείμενα που δημιουργήθηκαν για την κλήση. Στο Python 3.9, πολλά ενσωματωμένα Python - εύρος, tuple, set, frozenset, list ,ict - χρήση διάνυσμα κλήση εσωτερικά για να επιταχύνει την εκτέλεση.

Ο δεύτερος μεγάλος ενισχυτής απόδοσης είναι η πιο αποτελεσματική ανάλυση του πηγαίου κώδικα Python. Ο νέος αναλυτής για το χρόνο εκτέλεσης CPython δεν είχε σχεδιαστεί για την αντιμετώπιση προβλημάτων απόδοσης, αλλά για την αντιμετώπιση εσωτερικών ασυνεπειών στον αρχικό αναλυτή. Ωστόσο, ένα σημαντικό πλεονέκτημα είναι η ταχύτερη ανάλυση, ειδικά για μεγάλους όγκους κώδικα.

Περισσότερες λειτουργίες συμβολοσειράς και λεξικού Python

Το Python διευκολύνει τον χειρισμό κοινών τύπων δεδομένων και το Python 3.9 επεκτείνει αυτήν την ευκολία με νέες δυνατότητες για συμβολοσειρές και λεξικά. Για συμβολοσειρές, υπάρχουν νέες μέθοδοι για την αφαίρεση προθεμάτων και επιθημάτων, λειτουργίες που απαιτούν από καιρό πολλή χειροκίνητη εργασία για να ξεκινήσουν. Για τα λεξικά, υπάρχουν πλέον συνδικαλιστές, ένας για να συγχωνεύσει δύο λεξικά σε ένα νέο λεξικό και ένα για να ενημερώσει τα περιεχόμενα ενός λεξικού με ένα άλλο λεξικό.

Οι διακοσμητές χάνουν κάποιους περιορισμούς

Οι διακοσμητές σας επιτρέπουν να τυλίξετε τις λειτουργίες της Python για να αλλάξετε τη συμπεριφορά τους μέσω προγραμματισμού. Προηγουμένως, οι διακοσμητές μπορούσαν να αποτελούνται μόνο από το σύμβολο @, ένα όνομα (π.χ. func) ή ένα διακεκομμένο όνομα (μέθοδος func) και προαιρετικά μία κλήση (func.method (arg1, arg2)). Με το Python 3.9, οι διακοσμητές μπορούν πλέον να αποτελούνται από οποιαδήποτε έγκυρη έκφραση.

Ένας μακροχρόνιος τρόπος για να ξεπεράσετε αυτόν τον περιορισμό ήταν να δημιουργήσετε μια συνάρτηση ή μια έκφραση λάμδα που θα αντιστοιχούσε σε μια πιο περίπλοκη έκφραση όταν χρησιμοποιείται ως διακοσμητής. Τώρα οποιαδήποτε έκφραση θα κάνει, αρκεί να αποδίδει κάτι που μπορεί να λειτουργήσει ως διακοσμητής.

Νέες λειτουργίες τύπου Python

Τις τελευταίες εκδόσεις, η Python έχει επεκτείνει την υποστήριξη για υποδείξεις τύπου. Αυτό είναι κυρίως για χάρη των χειμώνα και των ελεγκτών κώδικα. οι τύποι δεν επιβάλλονται κατά το χρόνο εκτέλεσης στο CPython και δεν υπάρχουν σχέδια για να γίνει η Python μια στατικά δακτυλογραφημένη γλώσσα. Όμως, οι υποδείξεις τύπου είναι ένα ισχυρό εργαλείο για τη διασφάλιση της συνοχής σε μεγάλες βάσεις κωδικών, οπότε ο κώδικας Python μπορεί να επωφεληθεί από το να έχει συμβουλές τύπου.

Δύο νέες δυνατότητες για υποδείξεις τύπου και σχολιασμούς τύπου εισήλθαν στο Python 3.9. Σε ένα, πληκτρολογήστε υποδείξεις για το περιεχόμενο των συλλογών - π.χ. λίστες και λεξικά - είναι τώρα διαθέσιμα στην Python εγγενώς. Αυτό σημαίνει ότι μπορείτε για παράδειγμα να περιγράψετε μια λίστα ως λίστα [int] - μια λίστα ακεραίων - χωρίς να χρειάζεται πληκτρολόγηση βιβλιοθήκη για να το κάνει.

Η δεύτερη προσθήκη στους μηχανισμούς πληκτρολόγησης της Python είναι η ευέλικτη λειτουργία και οι μεταβλητοί σχολιασμοί. Αυτό επιτρέπει τη χρήση του Σχολιασμένος πληκτρολογήστε για να περιγράψετε έναν τύπο χρησιμοποιώντας μεταδεδομένα που μπορούν να εξεταστούν εκ των προτέρων (με εργαλεία χνούδι) ή κατά το χρόνο εκτέλεσης. Για παράδειγμα, Σχολιασμός [int, ctype ("char")] θα μπορούσε να χρησιμοποιηθεί για να περιγράψει έναν ακέραιο που πρέπει να θεωρηθεί ως α απανθρακώνω πληκτρολογήστε το C. Από προεπιλογή, η Python δεν θα έκανε τίποτα με έναν τέτοιο σχολιασμό, αλλά θα μπορούσε να χρησιμοποιηθεί από κώδικες linters.

Βελτιώσεις στα εσωτερικά της Python

Ο καθαρισμός, ο εξευγενισμός και ο εκσυγχρονισμός των εσωτερικών της Python είναι μια συνεχής πρωτοβουλία για τους προγραμματιστές της Python και η Python 3.9 έχει μερικές αλλαγές σε αυτό το πνεύμα.

Ο πρώτος είναι ένας επανασχεδιασμός του τρόπου αλληλεπίδρασης των ενοτήτων με τα μηχανήματα εισαγωγής. Οι μονάδες επέκτασης Python, γραμμένες σε C, μπορούν τώρα να χρησιμοποιούν έναν νέο μηχανισμό φόρτωσης που τους κάνει να συμπεριφέρονται περισσότερο σαν κανονικές μονάδες Python όταν εισάγονται. Αρκετές ενότητες στην τυπική βιβλιοθήκη της Python υποστηρίζουν πρόσφατα αυτήν τη συμπεριφορά: _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, χειριστής, πόρος, χρόνος, _weakref. Ο νέος μηχανισμός φόρτωσης όχι μόνο επιτρέπει τη διαχείριση των μονάδων επέκτασης με μεγαλύτερη ευελιξία από την Python, αλλά επιτρέπει επίσης νέες δυνατότητες όπως προηγμένες συμπεριφορές αγκίστρωσης.

Η δεύτερη πρωτοβουλία εκκαθάρισης είναι ένα σταθερό εσωτερικό ABI για το CPython, το οποίο είναι εγγυημένο ότι θα διαρκέσει για όλη τη διάρκεια ζωής του Python 3. Ιστορικά, κάθε σημαντική αναθεώρηση του Python ήταν ασυμβίβαστη με το ABI με τις προηγούμενες εκδόσεις, απαιτώντας την αναδιαμόρφωση των μονάδων επέκτασης για κάθε νέα έκδοση. Από τώρα και στο εξής, όλες οι μονάδες επέκτασης που χρησιμοποιούν το σταθερό ABI θα λειτουργούν σε όλες τις εκδόσεις Python. Με το Python 3.9, οι ακόλουθες λειτουργικές μονάδες στην τυπική βιβλιοθήκη χρησιμοποιούν το σταθερό ABI: audioop, ast, grp, _hashlib, pwd, _posixsubprocess, τυχαία, select, struct, termios, zlib.

Άλλες αλλαγές στο Python 3.9

  • Η τυπική βιβλιοθήκη της Python υποστηρίζει τώρα τη βάση δεδομένων ζώνης ώρας IANA. Η εν λόγω βάση δεδομένων είναι καλά συντηρημένη και ευρέως χρησιμοποιούμενη, και ο άμεσος τρόπος για να το χρησιμοποιήσετε στη βιβλιοθήκη χρόνου της Python θα είναι μια μεγάλη, εξοικονόμηση χρόνου.
  • Οι νέες μέθοδοι συμβολοσειρών επιτρέπουν την εύκολη αφαίρεση προθεμάτων και επιθημάτων. Αυτό είναι ένα από τα συνηθισμένα σενάρια καθημερινής χρήσης που απαιτούσαν πάρα πολύ boilerplate από ότι φαινόταν απαραίτητο. Το νέο .removeprefix () και .removesuffix () Οι μέθοδοι επιστρέφουν ένα τροποποιημένο αντίγραφο μιας συμβολοσειράς μείον το εν λόγω πρόθεμα ή επίθημα, υπό την προϋπόθεση ότι υπάρχουν στη συμβολοσειρά.

Πώς να κάνετε περισσότερα με την Python

  • 4 πούλια τύπου Python για να διατηρήσετε τον κωδικό σας καθαρό
  • Στυλ Python: 5 εργαλεία για τον καθαρισμό του κώδικα Python
  • Πώς να εργαστείτε με τον τύπο δεδομένων λίστας Python
  • Τρόπος συσκευασίας εφαρμογών Python με BeeWare Briefcase
  • Πώς να τρέξετε το Anaconda δίπλα-δίπλα με άλλους Pythons
  • Πώς να χρησιμοποιήσετε γυαλιά ηλίου Python
  • Ξεκινήστε με το async στο Python
  • Πώς να χρησιμοποιήσετε το asyncio στο Python
  • 3 βήματα για μια αναθεώρηση ασύγχρονου Python
  • Πώς να χρησιμοποιήσετε το PyInstaller για να δημιουργήσετε εκτελέσιμα Python
  • Εκμάθηση Cython: Πώς να επιταχύνετε το Python
  • Πώς να εγκαταστήσετε το Python με τον έξυπνο τρόπο
  • Πώς να διαχειριστείτε τα έργα Python με το Poetry
  • Πώς να διαχειριστείτε τα έργα Python με το Pipenv
  • Virtualenv και venv: Εξηγήθηκαν εικονικά περιβάλλοντα Python
  • Το Python virtualenv και το venv κάνουν και δεν πρέπει
  • Η εξήγηση και οι υποεπεξεργασίες Python εξηγούνται
  • Πώς να χρησιμοποιήσετε το πρόγραμμα εντοπισμού σφαλμάτων Python
  • Πώς να χρησιμοποιήσετε το χρονοδιάγραμμα για τον προφίλ κώδικα Python
  • Πώς να χρησιμοποιήσετε το cProfile για να προβάλετε τον κώδικα Python
  • Πώς να μετατρέψετε το Python σε JavaScript (και να επιστρέψετε ξανά)