Κυκλοφορία της γλώσσας προγραμματισμού Python 3.8

Μετά από ενάμιση χρόνο ανάπτυξης παρουσιάζονται έκδοση σημαντικής γλώσσας προγραμματισμού Python 3.8. Διορθωτικές ενημερώσεις για τον κλάδο Python 3.8 προγραμματίζεται κυκλοφορήσει εντός 18 μηνών. Τα κρίσιμα τρωτά σημεία θα διορθωθούν για 5 χρόνια έως τον Οκτώβριο του 2024. Οι διορθωτικές ενημερώσεις για τον κλάδο 3.8 θα κυκλοφορούν κάθε δύο μήνες, με την πρώτη διορθωτική έκδοση της Python 3.8.1 να έχει προγραμματιστεί για τον Δεκέμβριο.

Μεταξύ των προστιθέμενων καινοτομίες:

  • Υποστήριξη πράξεις ανάθεσης μέσα σε σύνθετες εκφράσεις. Με τον νέο τελεστή “:=”, είναι δυνατό να εκτελεστούν λειτουργίες εκχώρησης τιμών μέσα σε άλλες εκφράσεις, για παράδειγμα, για να αποφευχθούν κλήσεις διπλών συναρτήσεων σε δηλώσεις υπό όρους και κατά τον ορισμό βρόχων:

    αν (n := len(a)) > 10:
    ...

    while (block := f.read(256)) != ":
    ...

  • Υποστήριξη νέα σύνταξη για τον καθορισμό ορισμάτων συνάρτησης. Κατά την απαρίθμηση ορισμάτων κατά τον ορισμό μιας συνάρτησης, μπορείτε τώρα να καθορίσετε ένα "/" για να διαχωρίσετε ορίσματα στα οποία μπορούν να εκχωρηθούν τιμές μόνο με βάση τη σειρά με την οποία απαριθμούνται οι τιμές κατά τη διάρκεια της κλήσης συνάρτησης, από ορίσματα που μπορούν να εκχωρηθούν με οποιαδήποτε σειρά (variable=value syntax) ). Από την πρακτική πλευρά, το νέο χαρακτηριστικό επιτρέπει στις συναρτήσεις στην Python να μιμούνται πλήρως τη συμπεριφορά των υπαρχουσών συναρτήσεων στο C και επίσης να αποφεύγουν τη δέσμευση σε συγκεκριμένα ονόματα, για παράδειγμα, εάν το όνομα της παραμέτρου σχεδιάζεται να αλλάξει στο μέλλον.

    Η σημαία "/" συμπληρώνει τη σημαία "*" που προστέθηκε προηγουμένως, διαχωρίζοντας μεταβλητές για τις οποίες ισχύει μόνο μια εκχώρηση με τη μορφή "variable=value". Για παράδειγμα, στη συνάρτηση "def f(a, b, /, c, d, *, e, f):" οι μεταβλητές "a" και "b" μπορούν να αντιστοιχιστούν μόνο με τη σειρά που αναφέρονται οι τιμές ,
    τις μεταβλητές "e" και "f", μόνο μέσω της ανάθεσης "variable=value" και τις μεταβλητές "c" και "d" με οποιονδήποτε από τους ακόλουθους τρόπους:

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, s=30, d=40, e=50, f=60)

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

  • Εφαρμόστηκε νέο πρωτόκολλο Vectorcall για ταχύτερη πρόσβαση σε αντικείμενα γραμμένα σε γλώσσα C. Στο CPython 3.8, η πρόσβαση στο Vectorcall εξακολουθεί να περιορίζεται στην εσωτερική χρήση· η μεταφορά στην κατηγορία των δημοσίως προσβάσιμων API σχεδιάζεται στο CPython 3.9.
  • Προστέθηκε κλήσεις σε Runtime Audit Hooks, τα οποία παρέχουν σε εφαρμογές και πλαίσια σε Python πρόσβαση σε πληροφορίες χαμηλού επιπέδου σχετικά με την πρόοδο του σεναρίου για τον έλεγχο των ενεργειών που εκτελούνται (για παράδειγμα, μπορείτε να παρακολουθείτε την εισαγωγή μονάδων, το άνοιγμα αρχείων, χρησιμοποιώντας ένα ίχνος, πρόσβαση σε υποδοχές δικτύου, εκτέλεση κώδικα μέσω exec, eval και run_mod).
  • Στην ενότητα pickle εξασφαλισμένη υποστήριξη για το πρωτόκολλο Pickle 5, που χρησιμοποιείται για σειριοποίηση και αποσειριοποίηση αντικειμένων. Το Pickle σάς επιτρέπει να βελτιστοποιήσετε τη μεταφορά μεγάλων ποσοτήτων δεδομένων μεταξύ διεργασιών Python σε διαμορφώσεις πολλαπλών πυρήνων και κόμβων, μειώνοντας τον αριθμό των λειτουργιών αντιγραφής στη μνήμη και εφαρμόζοντας πρόσθετες τεχνικές βελτιστοποίησης, όπως η χρήση αλγορίθμων συμπίεσης για συγκεκριμένα δεδομένα. Η πέμπτη έκδοση του πρωτοκόλλου είναι αξιοσημείωτη για την προσθήκη ενός τρόπου μετάδοσης εκτός ζώνης, στον οποίο τα δεδομένα μπορούν να μεταδοθούν χωριστά από το κύριο ρεύμα τουρσί.
  • Από προεπιλογή, είναι ενεργοποιημένη η τέταρτη έκδοση του πρωτοκόλλου Pickle, η οποία, σε σύγκριση με την τρίτη έκδοση που προσφερόταν προηγουμένως από προεπιλογή, επιτρέπει υψηλότερη απόδοση και μείωση του μεγέθους των μεταδιδόμενων δεδομένων.
  • Στην ενότητα πληκτρολόγηση Παρουσιάζονται πολλά νέα χαρακτηριστικά:
    • Κατηγορία TypedDict για συσχετιστικούς πίνακες στους οποίους οι πληροφορίες τύπου καθορίζονται ρητά για τα δεδομένα που σχετίζονται με τα κλειδιά (“TypedDict('Point2D', x=int, y=int, label=str)").
    • Τύπος Λίγο, που σας επιτρέπει να περιορίσετε μια παράμετρο ή να επιστρέψετε την τιμή σε μερικές προκαθορισμένες τιμές ("Κυριολεκτικά['συνδεδεμένο', 'αποσυνδεδεμένο']").
    • Κατασκευή "τέλος", που καθιστά δυνατό τον καθορισμό των τιμών των μεταβλητών, των συναρτήσεων, των μεθόδων και των κλάσεων που δεν μπορούν να αλλάξουν ή να εκχωρηθούν εκ νέου ("pi: Final[float] = 3.1415926536").
  • Προστέθηκε η δυνατότητα εκχώρησης προσωρινής μνήμης για μεταγλωττισμένα αρχεία με bytecode, αποθηκευμένο σε ξεχωριστό δέντρο FS και διαχωρισμένο από τους καταλόγους με τον κώδικα. Η διαδρομή για την αποθήκευση αρχείων με bytecode ορίζεται μέσω μιας μεταβλητής PYTHONPYCACHEPIX ή την επιλογή "-X pycache_prefix"?
  • Εφαρμόστηκε τη δυνατότητα δημιουργίας εκδόσεων εντοπισμού σφαλμάτων της Python που χρησιμοποιούν ένα ABI πανομοιότυπο με την έκδοση, το οποίο σας επιτρέπει να φορτώνετε επεκτάσεις γραμμένες σε γλώσσα SI, μεταγλωττισμένες για σταθερές εκδόσεις, σε εκδόσεις εντοπισμού σφαλμάτων.
  • Οι συμβολοσειρές f (μορφοποιημένα κυριολεκτικά με πρόθεμα 'f') παρέχουν υποστήριξη για τον τελεστή = (για παράδειγμα, "f'{expr=}'"), ο οποίος σας επιτρέπει να μετατρέψετε μια έκφραση σε κείμενο για ευκολότερο εντοπισμό σφαλμάτων. Για παράδειγμα:

    ››› χρήστης = 'eric_idle'
    ››› Member_since = ημερομηνία(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' Member_since=datetime.date(1975, 7, 31)"

  • Έκφραση "ΣΥΝΕΧΕΙΑ» επιτρέπεται να χρησιμοποιείται μέσα σε μπλοκ τελικά;
  • Προστέθηκε νέα ενότητα multiprocessing.shared_memory, που επιτρέπει τη χρήση τμημάτων κοινόχρηστης μνήμης σε διαμορφώσεις πολλαπλών διεργασιών.
  • Στην πλατφόρμα των Windows, η εφαρμογή asyncio έχει μετακινηθεί για χρήση της κλάσης ProactorEventLoop;
  • Η απόδοση της εντολής LOAD_GLOBAL έχει αυξηθεί κατά περίπου 40% λόγω της χρήσης ενός νέου μηχανισμού προσωρινής αποθήκευσης κωδικών αντικειμένων.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο