Γλωσσάρι¶
>>>
¶Η προεπιλεγμένη Python εντολή τουinteractive shell. Συχνά εμφανίζεται για παραδείγματα κώδικα που μπορούν να εκτελεστούν διαδραστικά στον interpreter.
...
¶Μπορεί να αναφέρεται σε:
Η προεπιλεγμένη Python εντολή τουinteractive shell κατά την εισαγωγή του κώδικα για ένα μπλοκ κώδικα με εσοχή, όταν βρίσκεται μέσα σε ένα ζεύγος ταιριασμένων αριστερών και δεξιών delimiters (παρενθέσεις, αγκύλες, άγκιστρα ή τριπλά εισαγωγικά), ή μετά τον καθορισμό ενός decorator.
Η ενσωματωμένη σταθερά
Ellipsis
.
- αφηρημένη βασική κλάση¶
Οι αφηρημένες βασικές κλάσεις συμπληρώνουν τοduck-typing παρέχοντας έναν τρόπο ορισμού interfaces όταν άλλες τεχνικές όπως η
hasattr()
θα ήταν αδέξιες ή ανεπαίσθητα λανθασμένες (για παράδειγμα μεmagic methods). Τα ABC (abstract base class) εισάγουν εικονικές υποκλάσεις, οι οποίες είναι κλάσεις που δεν κληρονομούνται από μια κλάση, αλλά εξακολουθούν να αναγνωρίζονται από τοisinstance()
και από τοissubclass()
” βλ. την τεκμηρίωση του moduleabc
. Η Python διαθέτει πολλά ενσωματωμένα ABC για δομές δεδομένων (στο modulecollections.abc
), αριθμούς (στο modulenumbers
), ροές (στο module μονάδαio
), εισαγωγή finders και loaders (στο moduleimportlib.abc
). Μπορείτε να δημιουργήσετε τα δικά σας ABC με το moduleabc
.- συνάρτηση annotate¶
Μια συνάρτηση που μπορεί να κληθεί για να ανακτήσει τοannotations ενός αντικειμένου. Αυτή η συνάρτηση είναι προσβάσιμη ως το χαρακτηριστικό
__annotate__
των συναρτήσεων, των κλάσεων και των modules. Οι συναρτήσεις annotate είναι ένα υποσύνολο τουevaluate functions.- annotation¶
Μια ετικέτα που σχετίζεται με μια μεταβλητή, ένα χαρακτηριστικό κλάσης ή μια παράμετρος συνάρτησης ή τιμή που επιστρέφεται, που χρησιμοποιείται κατά σύμβαση ωςtype hint.
Δεν είναι δυνατή η πρόσβαση στα annotations των τοπικών μεταβλητών κατά το χρόνο εκτέλεσης, αλλά τα annotations των global μεταβλητών, των χαρακτηριστικών κλάσης και των συναρτήσεων μπορούν να ανακτηθούν καλώντας την εντολή
annotationlib.get_annotations()
σε modules, κλάσεις και συναρτήσεις, αντίστοιχα.Βλ. ταvariable annotation,function annotation,PEP 484,PEP 526 καιPEP 649, τα οποία περιγράφουν την λειτουργικότητα. Δείτε επίσης ταAnnotations Best Practices για τις βέλτιστες πρακτικές δουλεύοντας με annotations.
- όρισμα¶
Μια τιμή μεταβιβάζεται σε μίαfunction (ήmethod) κατά την κλήση της συνάρτησης. Υπάρχουν δύο είδη ορισμάτων:
keyword argument: ένα όρισμα πριν από ένα αναγνωριστικό (π.χ.
name=
) σε μια κλήση συνάρτησης ή περνώντας το ως τιμή σε ένα λεξικό πριν από**
. Για παράδειγμα, το3
και το5
αποτελούν ορίσματα λέξεων-κλειδιών στις ακόλουθες κλήσεις προςcomplex()
:complex(real=3,imag=5)complex(**{'real':3,'imag':5})
positional argument: ένα όρισμα που δεν είναι όρισμα keyword. Τα ορίσματα θέσης μπορούν να εμφανίζονται στην αρχής μιας λίστας ορισμάτων ή/και να μεταβιβάζονται ως στοιχεία ενόςiterable πριν από
*
. Για παράδειγμα, το3
και το5
αποτελούν ορίσματα θέσης στις παρακάτω κλήσεις:complex(3,5)complex(*(3,5))
Τα ορίσματα εκχωρούνται στις ονομασμένες τοπικές μεταβλητές στο σώμα μια συνάρτησης. Βλ. την ενότηταCalls για τους κανόνες που διέπουν αυτήν την εκχώρηση. Συντακτικά, οποιαδήποτε έκφραση μπορεί να χρησιμοποιηθεί για να αναπαραστήσει ένα όρισμα” η αξιολογούμενη τιμή εκχωρείται σε μια τοπική μεταβλητή.
Βλ. επίσης την εγγραφή του γλωσσαρίου για τοparameter, την FAQ ερώτηση στοη διαφορά μεταξύ ορισμάτων και παραμέτρων, καιPEP 362.
- ασύγχρονος διαχειριστής context¶
Ένα αντικείμενο που ελέγχει το ορατό περιβάλλον σε μια δήλωση
asyncwith
ορίζοντας τις μεθόδους__aenter__()
και__aexit__()
. Που εισήχθη απόPEP 492.- ασύγχρονος generator¶
Μια συνάρτηση που επιστρέφει ένανasynchronous generator iterator. Μοιάζει με μια συνάρτηση coroutine που ορίζεται με
asyncdef
εκτός από ότι περιέχει εκφράσειςyield
για την παραγωγή μιας σειράς τιμών που μπορούν να χρησιμοποιηθούν σε ένανasyncfor
βρόχο.Συνήθως αναφέρεται σε μια συνάρτηση ασύγχρονου generator, αλλά μπορεί να αναφέρεται σε ένανασύγχρονο generator iterator σε ορισμένα contexts. Σε περιπτώσεις όπου το επιδιωκόμενο νόημα δεν είναι σαφές, με την χρήση των πλήρων όρων αποφεύγεται η ασάφεια.
Μια συνάρτηση ασύγχρονου generator μπορεί να περιέχει εκφράσεις
await
, καθώς και δηλώσειςasyncfor
, καιasyncwith
.- ασύγχρονος generator iterator¶
Ένα αντικείμενο που δημιουργήθηκε από μια συνάρτησηasynchronous generator.
Αυτός είναι έναςasynchronous iterator που όταν καλείται χρησιμοποιώντας την μέθοδο
__anext__()
επιστρέφει ένα αναμενόμενο αντικείμενο που θα εκτελέσει στο σώμα της συνάρτησης του ασύγχρονου generator μέχρι την επόμενηyield
έκφραση.Κάθε
yield
αναστέλλει προσωρινά την επεξεργασία, θυμάται την κατάσταση εκτέλεσης (συμπεριλαμβανομένων των τοπικών μεταβλητών και των δηλώσεωνtry σε εκκρεμότητα). Όταν οασύγχρονος generator iterator συνεχίσει αποτελεσματικά με άλλο αναμενόμενο που επιστρέφεται από:pep:`492()
καιPEP 525.- ασύγχρονος iterable¶
Ένα αντικείμενο, που μπορεί να χρησιμοποιηθεί σε μια δήλωση
asyncfor
. Πρέπει να επιστρέφει έναasynchronous iterator από την μέθοδο__aiter__()
. Που εισήχθη απόPEP 492.- ασύγχρονος iterator¶
Ένα αντικείμενο που υλοποιεί τις μεθόδους
__aiter__()
και__anext__()
. Η μέθοδος__anext__()
πρέπει να επιστρέφει έναawaitable αντικείμενο. Τοasyncfor
επιλύει τα αναμενόμενα που επιστρέφονται από τη μέθοδο__anext__()
ενός ασύγχρονου iterator έως ότου εγείρει μια εξαίρεσηStopAsyncIteration
. Εισήχθη απόPEP 492.- κατάσταση συνδεδεμένου νήματος¶
Έναthread state που είναι ενεργή για το τρέχον νήμα του λειτουργικού συστήματος.
Όταν επισυνάπτεται έναςthread state, το νήμα του λειτουργικού συστήματος έχει πρόσβαση στο πλήρες Python C API και μπορεί να καλέσει με ασφάλεια τον διερμηνέα bytecode.
Εκτός εάν μια συνάρτηση αναφέρει ρητά το αντίθετο, η προσπάθεια κλήσης του C API χωρίς μια συνημμένη κατάσταση νήματος θα οδηγήσει ένα μοιραίο σφάλμα ή σε απροσδιόριστη συμπεριφορά. Μια κατάσταση νήματος μπορεί να συνδεθεί και να αποσυνδεθεί ρητά από τον χρήση μέσω του C API ή έμμεσα από τον χρόνο εκτέλεσης, συμπεριλαμβανομένων των κλήσεων αποκλεισμού C και από τον διερμηνέα bytecode μεταξύ των κλήσεων.
Στις περισσότερες εκδόσεις της Python, η ύπαρξη μιας κατάσταση συνδεδεμένου νήματος υπονοεί ότι ο καλών διατηρεί τηνGIL για τον τρέχοντα διερμηνέα, επομένως μόνο ένα νήμα λειτουργικού συστήματος μπορεί να έχει μια κατάσταση συνδεδεμένου νήματος σε μια δεδομένη στιγμή. Στις εκδόσειςfree-threaded της Python, τα νήματα μπορούν να διατηρούν ταυτόχρονα μια κατάσταση συνδεδεμένου νήματος, επιτρέποντας την πραγματική παραλληλία του διερμηνέα bytecode.
- χαρακτηριστικό¶
Μια τιμή που σχετίζεται με ένα αντικείμενο που συνήθως αναφέρεται με όνομα χρησιμοποιώντας εκφράσεις με κουκκίδες. Για παράδειγμα, εάν ένα αντικείμενοo έχει ένα χαρακτηριστικόa θα αναφέρεται ωςo.a.
Είναι δυνατό να δώσουμε σε ένα αντικείμενο ένα χαρακτηριστικό που το όνομα του δεν είναι αναγνωριστικό όπως ορίζεται απόIdentifiers and keywords, για παράδειγμα χρησιμοποιώντας
setattr()
, αν επιτρέπεται από το αντικείμενο. Ένα τέτοιο χαρακτηριστικό δεν θα είναι προσβάσιμο χρησιμοποιώντας τις τελείες, και αντί αυτού θα πρέπει να ανακτηθεί χρησιμοποιώνταςgetattr()
.- awaitable¶
Ένα αντικείμενο που μπορεί να χρησιμοποιηθεί στην έκφραση
await
. Μπορεί να είναιcoroutine ή ένα αντικείμενο με μια__await__()
μέθοδο. Βλ. επίσηςPEP 492.- BDFL¶
Ακρωνύμιο τουBenevolent Dictator For Life, καλοκάγαθος δικτάτορας της ζωής, δηλαδήGuido van Rossum, ο δημιουργός της Python.
- δυαδικό αρχείο¶
Έναfile object ικανό να διαβάζει και να γράφειδυαδικού τύπου αντικείμενα. Παραδείγματα δυαδικών αρχείων είναι αρχεία που ανοίγουν σε δυαδική λειτουργία (
'rb'
,'wb'
ή'rb+'
),sys.stdin.buffer
,sys.stdout.buffer
, και στιγμιοτύπων τωνio.BytesIO
καιgzip.GzipFile
.Βλ. επίσηςtext file για ένα αντικείμενο τύπου αρχείο ικανό να διαβάσει και να γράψει
str
αντικείμενα.- δανεική αναφορά¶
Στο C API της Python, μια δανεική αναφορά είναι μια αναφορά σε ένα αντικείμενο, όπου ο κώδικας που χρησιμοποιεί το αντικείμενο δεν κατέχει την αναφορά. Γίνεται ένας αχρησιμοποίητος δείκτης εάν το αντικείμενο καταστραφεί. Για παράδειγμα, μια διαδικασία garbage collection μπορεί να αφαιρέσει το τελευταίοstrong reference από το αντικείμενο και έτσι να το καταστρέψει.
Συνίσταται η κλήση του
Py_INCREF()
στοδανεική αναφορά με σκοπό να μετατραπεί σε έναισχυρή αναφορά επιτόπου, εκτός όταν το αντικείμενο δεν μπορεί να καταστραφεί πριν από την τελευταία χρήση της δανεικής αναφοράς. Η συνάρτησηPy_NewRef()
μπορεί να χρησιμοποιηθεί ώστε να δημιουργηθεί έναισχυρή αναφορά.- bytes-like αντικείμενα¶
Ένα αντικείμενο που υποστηρίζει τοBuffer Protocol και μπορεί να εξάγει ένα C-contiguous buffer. Αυτό περιλαμβάνει όλα τα αντικείμενα
bytes
,bytearray
, καιarray.array
, καθώς και πολλά κοινάmemoryview
αντικείμενα. Τα δυαδικού τύπου (bytes-like) αντικείμενα μπορούν να χρησιμοποιηθούν για διάφορες λειτουργίες που διαχειρίζονται δυαδικά δεδομένα” αυτά περιλαμβάνουν συμπίεση αποθήκευση σε δυαδικό αρχείο και αποστολή μέσω socket.Ορισμένες λειτουργίες χρειάζονται τα δυαδικά δεδομένα να είναι μεταβλητά. Η τεκμηρίωση συχνά αναφέρεται σε αυτά ως «δυαδικά αντικείμενα ανάγνωσης-εγγραφής» (read-write bytes-like objects). Παραδείγματα μεταβλητών αντικειμένων προσωρινής αποθήκευσης περιέχουν
bytearray
και έναmemoryview
ενόςbytearray
. Άλλες λειτουργίες απαιτούν την αποθήκευσης των δυαδικών δεδομένα σε αμετάβλητα αντικείμενα («δυαδικά αντικείμενα μόνο ανάγνωσης»” (read-only bytes-like objects) παραδείγματα αυτών περιέχουνbytes
και έναmemoryview
ενόςbytes
αντικειμένου.- bytecode¶
Ο πηγαίος κώδικα της Python μεταγλωττίζεται σεbytecode, η εσωτερική αναπαράσταση ενός προγράμματος Python στον διερμηνέα CPython. Τοbytecode αποθηκεύεται επίσης προσωρινά ως
.pyc
αρχεία ώστε η εκτέλεση του ίδιου αρχείου να είναι γρηγορότερη την δεύτερη φορά εκτέλεσης (μπορεί να αποφευχθεί η εκ νέου μεταγλώττιση από τον πηγαίο κώδικα σεbytcode). Αυτή η «ενδιάμεση γλώσσα» λέγεται ότι τρέχει σε μιαvirtual machine που εκτελεί τον κώδικα μηχανής που αντιστοιχεί σε κάθεbytecode. Λάβετε υπόψη ότι ταbytecode δεν αναμένεται να λειτουργούν μεταξύ διαφορετικών εικονικών μηχανών Python, ούτε να είναι σταθερά μεταξύ των εκδόσεων της Python.Μια λίστα από οδηγίες σχετικά με τα bytecode μπορεί να βρεθεί στην τεκμηρίωση γιατο module dis.
- callable¶
Ένα callable είναι ένα αντικείμενο που μπορεί να καλεστεί, πιθανά με ένα σύνολο ορισμάτων (βλ.argument), με την παρακάτω σύνταξη:
callable(argument1,argument2,argumentN)
Μιαfunction, και κατ” επέκταση μιαmethod είναι callable. Ένα στιγμιότυπο μια κλάσης που υλοποιεί τη μέθοδο
__call__()
είναι επίσης callable.- callback¶
Μια subroutine συνάρτηση η οποία μεταβιβάζεται ως όρισμα που θα εκτελεστεί κάποια στιγμή στο μέλλον.
- κλάση¶
Ένα πρότυπο για τη δημιουργία αντικειμένων που ορίζονται από το χρήστη. Οι ορισμοί κλάσεων συνήθως περιέχουν ορισμούς μεθόδων που λειτουργούν σε στιγμιότυπα της κλάσης.
- μεταβλητή κλάσης¶
Μια μεταβλητή που ορίζεται σε μια κλάση και προορίζεται να τροποποιηθεί μόνο σε επίπεδο κλάσης (δηλ. όχι σε ένα στιγμιότυπο μιας κλάσης).
- μεταβλητή κλεισίματος¶
Έναςfree variable που αναφέρεται από έναnested scope και ορίζεται σε μια εξωτερική περιοχή, αντί να επιλύεται δυναμικά κατά την εκτέλεση από τα καθολικά ή ενσωματωμένα namespaces. Μπορεί να δηλωθεί ρητά με τη δεσμευμένη λέξη-κλειδί
nonlocal
ώστε να επιτραπεί η εγγραφή, ή να θεωρηθεί ότι ορίζεται έμμεσα όταν η μεταβλητή χρησιμοποιείται μόνο για ανάγνωση.Για παράδειγμα, η συνάρτηση
inner
του παρακάτω κώδικα, τόσο ηx
όσο και ηprint
είναιfree variables, αλλά μόνο ηx
είναι μιαμεταβλητή κλεισίματος:defouter():x=0definner():nonlocalxx+=1print(x)returninner
Λόγο του χαρακτηριστικού
codeobject.co_freevars
(το οποίο, παρά την ονομασία του, περιλαμβάνει μόνο τα ονόματα των μεταβλητών κλεισίματος και όχι όλες τις αναφερόμενες ελεύθερες μεταβλητές), χρησιμοποιείται μερικές φορές ο πιο γενικός όροςfree variable ακόμη και όταν γίνεται ειδική αναφορά σε μεταβλητές κλεισίματος.- μιγαδικός αριθμός¶
Μια επέκταση του γνωστού συστήματος πραγματικών αριθμών στο οποίο όλοι οι αριθμοί εκφράζονται ως άθροισμα ενός πραγματικού μέρους και ενός φανταστικού μέρους. Οι φανταστικοί αριθμοί είναι πραγματικά πολλαπλάσια της φανταστικής μονάδα (η τετραγωνική ρίζα του
-1
), που συχνά γράφονταιi
στα μαθηματικά ήj
στη μηχανική. Η Python έχει ενσωματωμένη υποστήριξη για μιγαδικούς αριθμούς, οι οποίοι γράφονται με αυτόν τον τελευταίο συμβολισμό” το φανταστικό μέρος γράφεται με το επίθημαj
, π.χ.,3+1j
. Για να αποκτήσετε πρόσβαση σε σύνθετα ισοδύναμα το modulemath
, χρησιμοποιήστε τοcmath
. Η χρήση μιγαδικών αριθμών είναι ένα αρκετά προηγμένο μαθηματικό χαρακτηριστικό. εάν δεν γνωρίζετε την ανάγκη τους, είναι σχεδόν σίγουρο ότι μπορείτε να τα αγνοήσετε με ασφάλεια.- context¶
Αυτό ο όρος έχει διαφορετικές σημασίες ανάλογα με το πού και πώς χρησιμοποιείται. Μερικές κοινές έννοιες:
Η προσωρινή κατάσταση ή το περιβάλλον που δημιουργείται από ένανcontext manager μέσω μιας δήλωσης
with
.Το σύνολο των δεσμευμένων κλειδιού-τιμής που σχετίζονται με ένα συγκεκριμένο αντικείμενο
contextvars.Context
και προσπελάζονται μέσω αντικειμένωνContextVar
. Βλ. επίσηςcontext variable.Ένα αντικείμενο
contextvars.Context
. Βλ. επίσηςcurrent context.
- πρωτόκολλο διαχείρισης περιβάλλοντος¶
Οι μέθοδοι
__enter__()
και__exit__()
καλούνται από τη δήλωσηwith
. Βλ.PEP 343.- διαχειριστής context¶
Ένα αντικείμενο που υλοποιεί τοcontext management protocol και ελέγχει το περιβάλλον που είσαι ορατό μέσα σε μια δήλωση
with
. Βλ.PEP 343.- context μεταβλητή¶
Μια μεταβλητή της οποίας η τιμή εξαρτάται από το ποιο είναι τοcurrent context. Οι τιμές προσπελάζονται μέσω των αντικειμένων
contextvars.ContextVar
. Οι μεταβλητές συμφραζόμενων χρησιμοποιούνται κυρίως για να απομονώσουν την κατάσταση μεταξύ ταυτόχρονων ασύγχρονων εργασιών.- contiguous¶
Ένα buffer θεωρείται contiguous ακριβώς εάν είναι είτεC-contiguous είτεFortran contriguous. Το buffer μηδενικών διαστάσεων είναι C και Fortran contiguous. Σε μονοδιάστατους πίνακες, τα στοιχεία πρέπει να τοποθετούνται στη μνήμη το ένα δίπλα στο άλλο, με σειρά αύξησης των δεικτών ξεκινώντας από το μηδέν. Σε πολυδιάστατους C-contiguous πίνακες, ο τελευταίος δείκτης μεταβάλλεται ταχύτερα όταν επισκέπτονται τα στοιχεία σε σειρά διεύθυνσης μνήμης. Ωστόσο, σε Fortran contiguous πίνακες, ο πρώτος δείκτης μεταβάλλεται πιο γρήγορα.
- coroutine¶
Οι coroutines είναι μια πιο γενικευμένη μορφή subroutines. Οι subroutines εισάγονται σε ένα σημείο και εξάγονται σε άλλο σημείο. Οι coroutines μπορεί να εισαχθούν, να εξαχθούν και να συνεχιστούν σε πολλά διαφορετικά σημεία. Μπορούν να υλοποιήσουν με την δήλωση
asyncdef
. Βλ. επίσηςPEP 492.- coroutine συνάρτηση¶
Μια συνάρτηση που επιστρέφει έναcoroutine αντικείμενο. Μια συνάρτηση coroutine μπορεί να ορίζεται από τη δήλωση
asyncdef
, και μπορεί να περιέχειawait
,asyncfor
, καιasyncwith
λέξεις κλειδιά. Αυτές εισήχθησαν από τοPEP 492.- CPython¶
Η κανονική υλοποίηση της γλώσσας προγραμματισμού Python, όπως διανέμεται στοpython.org. Ο όρος «CPython» χρησιμοποιείται όταν είναι απαραίτητο για την διάκριση αυτής της υλοποίησης από άλλες όπως ηJython ή ηIronPython.
- τρέχον πλαίσιο¶
Τοcontext (
contextvars.Context
αντικείμενο) που χρησιμοποιείται αυτή τη στιγμή από τα αντικείμεναContextVar
για να προσπελάσει (να πάρει ή να ορίσει) τις τιμές τωνcontext variables. Κάθε νήμα έχει το δικό του τρέχον συμφραζόμενο Τα πλαίσια για την εκτέλεση ασύγχρονων εργασιών (βλ.asyncio
) συνδέουν κάθε εργασία με ένα συμφραζόμενο, το οποίο γίνεται το τρέχον συμφραζόμενο όποτε η εργασία ξεκινά ή συνεχίζει την εκτέλεση.- decorator¶
Μια συνάρτηση που επιστρέφει μια άλλη συνάρτηση, συνήθως εφαρμόζεται ως μετασχηματισμός συνάρτησης χρησιμοποιώντας την
@wrapper
σύνταξη. Συνηθισμένα παραδείγματα για τους decorators είναιclassmethod()
καιstaticmethod()
.Η σύνταξη του decorator είναι απλώς καλλωπιστική, οι ακόλουθοι δύο ορισμοί συναρτήσεων είναι σημασιολογικά ισοδύναμοι:
deff(arg):...f=staticmethod(f)@staticmethoddeff(arg):...
Η ίδια έννοια υπάρχει για τις κλάσεις, αλλά χρησιμοποιείται λιγότερο συχνά εκεί. Βλ. την τεκμηρίωση γιαfunction definitions καιclass definitions για περισσότερα σχετικά με τους decorators.
- descriptor¶
Κάθε αντικείμενο που ορίζει τις μεθόδους
__get__()
,__set__()
, ή__delete__()
. Όταν ένα χαρακτηριστικό κλάσης είναι descriptor, η ειδική δεσμευτική του συμπεριφορά ενεργοποιείται κατά την αναζήτηση χαρακτηριστικών. Κανονικά, χρησιμοποιώνταςa.b για να λάβετε, να ορίσετε ή να διαγράψετε ένα χαρακτηριστικό αναζητά το αντικείμενο με το όνομαb στο λεξικό της κλάσης γιαa, αλλά εάν τοb είναι descriptor, καλείται η αντίστοιχη μέθοδος descriptor. Η κατανόηση των descriptors είναι το κλειδί για την καλύτερη κατανόηση της Python γιατί αυτό αποτελεί την βάση για πολλά χαρακτηριστικά όπως συναρτήσεις, μεθόδους, ιδιότητες, μέθοδοι κλάσης στατικές μέθοδοι, και αναφορά σε σούπερ κλάσεις.Για περισσότερες πληροφορίες αναφορικά με τις μεθόδους των descriptors, βλ. seeImplementing Descriptors ή τοΠρακτικός οδηγός για τη χρήση του Descriptor.
- λεξικό¶
Ένα προσεταιριστικός πίνακα, όπου αυθαίρετα κλειδιά αντιστοιχίζονται σε τιμές. Τα κλειδιά μπορεί να είναι οποιοδήποτε αντικείμενο με μεθόδους
__hash__()
και__eq__()
. Ονομάζεται ως hash στο Perl.- κατανόηση λεξικού¶
Ένα συμπαγής τρόπος για να επεξεργαστείτε όλα ή μέρος των στοιχείων σε ένα επαναληπτικό και να επιστραφεί ένα με λεξικό με τα αποτελέσματα.
results={n:n**2forninrange(10)}
δημιουργεί ένα λεξικό που περιέχει το κλειδίn
που αντιστοιχίζεται με την τιμήn**2
. Βλ.Displays for lists, sets and dictionaries.- όψη λεξικού¶
Τα αντικείμενα που επιστρέφονται από
dict.keys()
,dict.values()
, καιdict.items()
καλούνται όψεις λεξικού. Αυτές παρέχουν μια δυναμική όψη των των εγγραφών του λεξικού, που σημαίνει ότι όταν το λεξικό μεταβάλλεται, η όψη αντικατοπτρίζει αυτές τις αλλαγές. Για να αναγκάσετε την όψη λεξικού να γίνει μια πλήρης λίστα χρησιμοποιήστε τοlist(dictview)
. Βλ.Αντικείμενα όψης λεξικού.- docstring¶
Μια literal συμβολοσειρά που εμφανίζεται ως η πρώτη έκφραση σε μια κλάση, συνάρτηση ή module. Ενώ αγνοείται κατά την εκτέλεση της σουίτας, αναγνωρίζεται από τον μεταγλωττιστή και τοποθετείται στο χαρακτηριστικό
__doc__
της κλάσης, της συνάρτησης ή του module που περικλείει. Δεδομένου ότι είναι διαθέσιμο μέσω ενδοσκόπησης, το κανονικό μέρος για την τεκμηρίωση του αντικειμένου.- duck-typing¶
Ένα στυλ προγραμματισμού που δεν εξετάζει τον τύπο ενός αντικειμένου για να προσδιορίσει αν έχει τη σωστή διεπαφή” αντίθετα, η μέθοδος ή το χαρακτηριστικό καλείται απλώς ή χρησιμοποιείται («If it looks like a duck and quacks like a duck, it must be a duck.») Δίνοντας έμφαση στις διεπαφές και όχι σε συγκεκριμένους τύπους, ο καλά σχεδιασμένος κώδικας βελτιώνει την ευελιξία του επιτρέποντας την πολυμορφική υποκατάσταση. Ο τύπος duck-typing αποφεύγει δοκιμές χρησιμοποιώντας
type()
ήisinstance()
. (Σημείωση, ωστόσο, ότι ο τύπος πάπιαςduck-typing μπορεί να συμπληρωθεί μεabstract base classes.) Αντί αυτού, συνήθως χρησιμοποιεί δοκιμέςhasattr()
ή προγραμματισμόEAFP.- EAFP¶
Πιο εύκολο να ζητήσεις συγχώρεση παρά άδεια. Αυτό το κοινό στυλ προγραμματισμού σε Python προϋποθέτει την ύπαρξη έγκυρων κλειδιών ή χαρακτηριστικών και συλλαμβάνει εξαιρέσεις εάν η υπόθεση αποδεχθεί εσφαλμένη. Αυτό το καθαρό και γρήγορο στυλ χαρακτηρίζεται από την παρουσία πολλών δηλώσεων
try
καιexcept
. Η τεχνική έρχεται σε αντίθεση με το στυλ που είναιLBYL κοινό σε πολλές άλλες γλώσσες, όπως η C.- αξιολόγηση συνάρτησης¶
Μια συνάρτηση που μπορεί να κληθεί για να αξιολογήσει ένα αδρανές χαρακτηριστικό ενός αντικειμένου, όπως η τιμή των ψευδωνύμων τύπου που δημιουργούνται με την πρόταση
type
.- έκφραση¶
Ένα κομμάτι σύνταξης που μπορεί να αξιολογηθεί σε κάποια τιμή. Με άλλα λόγια, μια έκφραση είναι μια συσσώρευση στοιχείων έκφρασης όπως κυριολεξία, ονόματα, πρόσβαση χαρακτηριστικών, τελεστές ή κλήσεις συναρτήσεων που όλες επιστρέφουν μια τιμή. Σε αντίθεση με πολλές άλλες γλώσσες, δεν είναι όλες οι γλωσσικές δομές εκφράσεις. Υπάρχουνε επίσηςstatements που δεν μπορούν να χρησιμοποιηθούν ως εκφράσεις, όπως το
while
. Οι αναθέσεις τιμών είναι επίσης δηλώσεις όχι εκφράσεις.- module επέκτασης¶
Ένα module γραμμένο σε C ή C++, που χρησιμοποιείται από το C API της Python για να αλληλεπιδράσουν με τον πυρήνα και με τον κώδικα του χρήστη.
- f-string¶
Οι κυριολεκτικές συμβολοσειρές χρησιμοποιούν με πρόθεμα
'f'
ή'F'
ονομάζονται συνήθως «f-strings» που είναι συντομογραφία τουformatted string literals. Βλ. επίσηςPEP 498.- αντικείμενο αρχείου¶
Ένα αντικείμενο που εκθέτει ένα API προσανατολισμένο σε αρχείο (με μεθόδους όπως
read()
ήwrite()
) σε έναν υποκείμενο πόρο. Ανάλογα με τον τρόπο που δημιουργήθηκε, ένα αντικείμενο αρχείου μπορεί να μεσολαβήσει στην πρόσβαση σε ένα πραγματικό αρχείο στο δίσκο ή σε άλλο τύπο συσκευής αποθήκευσης ή επικοινωνίας (για παράδειγμα τυπική είσοδος/ έξοδος, in-memory buffers, sockets, pipes, κλπ.). Αντικείμενο αρχείου ονομάζονται επίσηςfile-like objects ήstreams.Στην πραγματικότητα υπάρχουν τρεις κατηγορίες αντικειμένων αρχείου rawδυαδικά αρχεία, bufferedδυαδικά αρχεία καιαρχεία κειμένου. Οι διεπαφές τους ορίζονται στην ενότητα
io
. Ο κανονικός τρόπος για να δημιουργήσετε ένα αντικείμενο αρχείου είναι χρησιμοποιώντας την συνάρτησηopen()
.- αντικείμενο που μοιάζει με αρχείο¶
Ένα συνώνυμο με τοfile object.
- κωδικοποίηση συστήματος αρχείων και χειριστής σφαλμάτων¶
Η κωδικοποίηση και ο χειριστής σφαλμάτων χρησιμοποιείται από την Python για την αποκωδικοποίηση των bytes από το λειτουργικό σύστημα και την κωδικοποίηση σε Unicode για το λειτουργικό σύστημα.
Η κωδικοποίηση συστήματος αρχείων μπορεί να εγγυηθεί την επιτυχημένη αποκωδικοποίηση όλων των bytes κάτω από 128. Εάν η κωδικοποίηση συστήματος αρχείων δεν παρέχει αυτήν την εγγύηση, οι συναρτήσεις API μπορούν να εγείρουν ένα
UnicodeError
.Οι συναρτήσεις
sys.getfilesystemencoding()
καιsys.getfilesystemencodeerrors()
μπορούν να χρησιμοποιηθούν για να λάβετε την κωδικοποίηση του συστήματος αρχείων και του χειριστή σφαλμάτων.Οfilesystem encoding and error handler διαμορφώνονται κατά την εκκίνηση της Python από τη συνάρτηση
PyConfig_Read()
βλ.filesystem_encoding
καιfilesystem_errors
μέλη τουPyConfig
.Βλ. επίσης τοlocale encoding.
- finder¶
Ένα αντικείμενο που προσπαθεί να βρει τοloader για ένα module που εισήχθη.
Υπάρχουν δύο τύποι finder:finders μετα διαδρομής για χρήση με
sys.meta_path
, καιfinders εισόδου διαδρομής για χρήση μεsys.path_hooks
.Βλ.Finders and loaders και
importlib
για περισσότερες λεπτομέρειες.- ακέραια διαίρεση¶
Η μαθηματική διαίρεση που στρογγυλοποιεί προς τα κάτω στον κοντινότερο ακέραιο. Ο τελεστής ακέραιας διαίρεσης είναι
//
. Για παράδειγμα, η έκφραση11//4
αξιολογείται σε2
σε αντίθεση με την τιμή2.75
που επιστρέφεται από την διαίρεση με υποδιαστολή. Σημείωση ότι(-11)//4
κάνει-3
επειδή αυτή είναι η στρογγυλοποίησηπρος τα κάτω του-2.75
. Βλ.PEP 238.- δωρεάν νήμα¶
Ένα μοντέλο νημάτων όπου πολλά νήματα μπορούν να εκτελούν Python bytecode ταυτόχρονα μέσα στον ίδιο διερμηνέα. Αυτό έρχεται σε αντίθεση με τοglobal interpreter lock, το οποίο επιτρέπει σε ένα μόνο νήμα να εκτελεί Python bytecode κάθε φορά. Δείτε τοPEP 703.
- δωρεάν μεταβλητή¶
Τυπικά, όπως ορίζεται στοlanguage execution model, μια ελεύθερη μεταβλητή είναι οποιαδήποτε μεταβλητή χρησιμοποιείται σε ένα namespace που δεν είναι τοπική μεταβλητή σε εκείνο το namespace. Δείτε τοclosure variable για παράδειγμα. Πρακτικά, λόγω του ονόματος του χαρακτηριστικού
codeobject.co_freevars
, ο όρος χρησιμοποιείται επίσης μερικές φορές ως συνώνυμο τηςclosure variable.- συνάρτηση¶
Μια σειρά από δηλώσεις που επιστρέφουν κάποια τιμή σε αυτόν που την κάλεσε. Σε αυτές μπορούν να περαστούν κανένα ή περισσότεραορίσματα που μπορεί να χρησιμοποιηθεί για την εκτέλεση. Βλ. επίσης τις ενότητεςparameter,method, και theFunction definitions.
- συνάρτηση annotation¶
Έναςannotation μιας παραμέτρου συνάρτησης ή μιας τιμής επιστροφής.
Οι συναρτήσεις annotations συχνά χρησιμοποιούνται γιαυποδείξεις τύπου: για παράδειγμα, αυτή η συνάρτηση αναμένεται να πάρει δύο ορίσματα
int
και επίσης αναμένεται να έχει μία επιστρεφόμενη τιμήint
:defsum_two_numbers(a:int,b:int)->int:returna+b
Η σύνταξη συνάρτησης annotation αναλύεται στην ενότηταFunction definitions.
Βλ.variable annotation καιPEP 484, που περιγράφει αυτή την λειτουργικότητα. Επίσης βλ.Annotations Best Practices για τις καλύτερες πρακτικές δουλεύοντας με annotations.
- __future__¶
Έναfuture statement,
from__future__import<feature>
, καθοδηγεί τον μεταγλωττιστή να μεταγλωττίσει το τρέχον module χρησιμοποιώντας σύνταξη ή σημασιολογία που θα γίνει η τυπική σε μελλοντική έκδοση της Python. Το module__future__
τεκμηριώνει τις πιθανές τιμές τουfeature. Με την εισαγωγή αυτής της λειτουργικής μονάδας και την αξιολόγηση των μεταβλητών της, μπορείτε να δείτε πότε μια νέα δυνατότητα προστέθηκε για πρώτη φορά στην γλώσσα και πότε θα γίνει (ή έγινε) η προεπιλογή:>>>import__future__>>>__future__.division_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
- συλλογή απορριμάτων¶
Η διαδικασία απελευθέρωσης της μνήμης όταν δεν χρησιμοποιείται άλλο. Η Python εκτελεί συλλογή απορριμάτων μέσω καταμέτρησης αναφορών και ενός κυκλικού συλλέκτη σκουπιδιών που είναι σε θέση να ανιχνεύει και να σπάει τους κύκλους αναφοράς. Ο συλλέκτης απορριμάτων μπορεί να ελεγχθεί χρησιμοποιώντας το module
gc
.- generator¶
Μια συνάρτηση που επιστρέφει έναgenerator iterator. Μοιάζει με μια κανονική συνάρτηση εκτός από το ότι περιέχει εκφράσεις
yield
για την παραγωγή μιας σειράς τιμών που μπορούν να χρησιμοποιηθούν σε έναν βρόχοfor ή που μπορούν να ανακτηθούν μία τη φορά με την συνάρτησηnext()
function.Συνήθως αναφέρεται σε μια συνάρτηση generator, αλλά μπορεί να αναφέρεται σε ένανgenerator iterator σε μερικά contexts. Σε περιπτώσεις όπου το επιδιωκόμενο νόημα δεν είναι σαφές, η χρήση των πλήρων όρων αποφεύγει την ασάφεια.
- generator iterator¶
Ένα αντικείμενο που δημιουργείται από μια συνάρτησηgenerator.
Κάθε
yield
αναστέλλει προσωρινά την επεξεργασία, θυμάται την κατάσταση εκτέλεσης (συμπεριλαμβανομένων των τοπικών μεταβλητών και των δηλώσεων δοκιμής σε εκκρεμότητα). Όταν οgenerator iterator συνεχίσει, συνεχίζει από εκεί που σταμάτησε (σε αντίθεση με τις συναρτήσεις που ξεκινούν από την αρχή σε κάθε επίκληση).- generator έκφραση¶
Μιαexpression που επιστρέφει ένανiterator. Μοιάζει με κανονική έκφραση που ακολουθείται από μια πρόταση
for
που ορίζει μια μεταβλητή βρόχου, ένα εύρος και μια προαιρετική πρότασηif
. Η συνδυασμένη έκφραση δημιουργεί τιμές για μια συνάρτηση εγκλεισμού:>>>sum(i*iforiinrange(10))# sum of squares 0, 1, 4, ... 81285
- γενική συνάρτηση¶
Μια συνάρτηση που αποτελείται από πολλαπλές συναρτήσεις που υλοποιούν την ίδια λειτουργία για διαφορετικούς τύπους. Ποια υλοποίηση πρέπει να χρησιμοποιηθεί κατά τη διάρκεια μια κλήσης καθορίζεται από τον αλγόριθμο αποστολής.
Βλ. επίσης την καταχώρηση τουsingle dispatch, τον decorator
functools.singledispatch()
καιPEP 443.- γενικός τύπος¶
Έναςtype που μπορεί να παραμετροποιηθεί” συνήθως μιαcontainer class, όπως
list
ήdict
. Χρησιμοποιείται γιαtype hints καιannotations.Για περισσότερες λεπτομέρειες, βλ.generic alias typesPEP 483,PEP 484,PEP 585, και το module
typing
.- GIL¶
- global interpreter lock¶
Ο μηχανισμός που χρησιμοποιείται από τον διερμηνέαCPython για να διασφαλίσει ότι μόνο ένα νήμα εκτελεί Pythonbytecode κάθε φορά. Αυτό απλοποιεί την υλοποίηση CPython δημιουργώντας το μοντέλο αντικειμένου (συμπεριλαμβανομένων κρίσιμων ενσωματωμένων τύπων όπως π.χ.
dict
) έμμεσα ασφαλές έναντι ταυτόχρονης πρόσβασης. Το κλείδωμα ολόκληρου του διερμηνέα διευκολύνει τον διερμηνέα να είναι πολλαπλών νημάτων, εις βάρος του μεγάλου μέρους του παραλληλισμού που παρέχουν οι μηχανές πολλαπλών επεξεργαστών.Ωστόσο, ορισμένες λειτουργικές μονάδες επέκτασης, είτε τυπικές είτε τρίτων, έχουν σχεδιαστεί έτσι ώστε να απελευθερώνουν το GIL όταν εκτελούν εργασίες εντατικών υπολογισμών όπως συμπίεση ή κατακερματισμός. Επίσης, το GIL απελευθερώνεται πάντα όταν εκτελείτε I/O.
Από την έκδοση Python 3.13, ο GIL μπορεί να απενεργοποιηθεί χρησιμοποιώντας τη ρύθμιση
--disable-gil
κατά τη διαμόρφωση της κατασκευής. Μετά την κατασκευή της Python με αυτήν με αυτήν την επιλογή, ο κώδικας πρέπει να εκτελείται με την επιλογή-Xgil=0
ή αφού ρυθμιστεί η μεταβλητή περιβάλλοντοςPYTHON_GIL=0
. Αυτή η δυνατότητα επιτρέπει βελτιωμένη απόδοση για εφαρμογές πολλαπλών νημάτων και διευκολύνει τη χρήση των επεξεργαστών πολλαπλών πυρήνων με αποδοτικό τρόπο. Για περισσότερες λεπτομέρειες, δείτε τοPEP 703.Σε προηγούμενες εκδόσεις του C API της Python, μια συνάρτηση μπορεί να δηλώνει ότι απαιτεί την τήρηση του GIL για να χρησιμοποιηθεί. Αυτό αναφέρεται στην ύπαρξη μιας κατάστασηςattached thread state.
- hash-based pyc¶
Ένα αρχείο κρυφής μνήμηςbytecode που χρησιμοποιεί τον κατακερματισμό και όχι τον χρόνο τροποποίησης του αντίστοιχου αρχείου προέλευσης για να προσδιορίσει την εγκυρότητα του. Βλ.Cached bytecode invalidation.
- hashable¶
Ένα αντικείμενο είναιhashable εάν έχει μια τιμή κατακερματισμού που δεν αλλάζει ποτέ κατά τη διάρκεια της ζωής του (χρειάζεται μια μέθοδο
__hash__()
) , και μπορεί να συγκριθεί με άλλα αντικείμενα (χρειάζεται μια μέθοδο__eq__()
) . Ταhashable αντικείμενα που συγκρίνονται ως προς την ισότητα τους πρέπει να έχουν την ίδια τιμή κατακερματισμού.Η ύπαρξηhashable κάνει ένα αντικείμενο να μπορεί να χρησιμοποιηθεί ως κλειδί λεξικού και ως μέλος ενός συνόλου, επειδή αυτές οι δομές δεδομένων χρησιμοποιούν τιμές κατακερματισμού.
Τα περισσότερα από τα αμετάβλητα ενσωματωμένα αντικείμενα της Python μπορούν να κατακερματιστούν” τα μεταβλητά κοντέινερ (όπως οι λίστες ή τα λεξικά) δεν είναι” τα αμετάβλητα κοντέινερ (όπως πλειάδες και τα frozesets) μπορούν να κατακερματιστούν μόνο εάν τα στοιχεία τους είναι κατακερματισμένα. Τα αντικείμενα που είναι στιγμιότυπα κλάσεων που ορίζονται από το χρήστη μπορούν να κατακερματιστούν από προεπιλογή. Όλα συγκρίνονται άνισα εκτός από τον εαυτό τους) και η τιμή κατακερματισμού τους προέρχεται από το
id()
.- IDLE¶
Ένα ολοκληρωμένο περιβάλλον ανάπτυξης και μάθησης για την Python.IDLE — Python editor and shell είναι ένα βασικό περιβάλλον επεξεργασίας και διερμηνέα που συνοδεύεται από την τυπική διανομή της Python.
- Αθάνατο¶
Αθάνατα αντικείμενα είναι μια λεπτομέρεια υλοποίησης της CPython που εισήχθη στηνPEP 683.
Εάν ένα αντικείμενο είναι αθάνατο, οπλήθος αναφοράς του δεν τροποποιείται, και επομένως δεν εκχωρείται ποτέ ενώ εκτελείται ο διερμηνέας. Για παράδειγμα,
True
καιNone
είναι αθάνατα στην CPython.Τα αθάνατα αντικείμενα μπορούν να αναγνωριστούν μέσω της
sys._is_immortal()
, ή μέσω τηςPyUnstable_IsImmortal()
στο C API.- immutable¶
Ένα αντικείμενο με σταθερή τιμή. Τα αμετάβλητα αντικείμενα περιλαμβάνουν αριθμούς , συμβολοσειρές και πλειάδες. Ένα τέτοιο αντικείμενο δεν μπορεί να αλλάξει. Ένα νέο αντικείμενο πρέπει να δημιουργηθεί εάν πρέπει να αποθηκευτεί μια διαφορετική τιμή. Παίζουν σημαντικό ρόλο σε μέρη όπου μια σταθερά απαιτείται, για παράδειγμα ως κλειδί σε ένα λεξικό.
- εισαγόμενο path¶
Μια λίστα από τοποθεσίες (ήκαταχωρίσεις διαδρομής) που μπορούν να αναζητηθούνpath based finder για να εισαχθούν modules. Κατά την διαδικασία εισαγωγής, αυτή η λίστα με τοποθεσίες συνήθως έρχεται από
sys.path
, αλλά για τα υποπακέτα μπορεί επίσης να έρθει από το χαρακτηριστικό του πακέτου γονέα__path__
.- εισαγωγή¶
Η διαδικασία κατά την οποία ο κώδικας της Python σε ένα module είναι διαθέσιμη στον κώδικα Python ενός άλλου module.
- εισαγωγέας¶
Ένα αντικείμενο μπορεί και να αναζητεί και να φορτώνει ένα module” και έναfinder καιloader αντικείμενο.
- διαδραστικός¶
Η Python έχει έναν διαδραστικό διερμηνέα όπου σημαίνει ότι μπορείς να εισάγεις δηλώσεις και εκφράσεις στην εισαγωγή εντολών του διερμηνέα, εκτελώντας τες άμεσα και εμφανίζοντας τα αποτελέσματα. Απλώς εκκινήστε την
python
χωρίς ορίσματα (πιθανώς επιλέγοντας το από το κύριο μενού του υπολογιστή σας). Αποτελεί έναν αποδοτικό τρόπο για να δοκιμάστε νέες ιδέες ή να εξετάστε modules και πακέτα (θυμηθείτεhelp(x)
). Για περισσότερα σχετικά με τη διαδραστική λειτουργία, δείτεΔιαδραστική Λειτουργία.- interpreted¶
Η Python είναι μια interpreted γλώσσα, σε αντίθεση με μια μεταγλωττισμένη, αν και η διάκριση μπορεί να είναι και θολή λόγω της παρουσία του bytecode μεταγλωττιστή. Αυτό σημαίνει ότι τα αρχεία προέλευσης μπορούν να εκτελεστούν απευθείας χωρίς να δημιουργηθεί ρητά ένα εκτελέσιμο αρχείο που στην συνέχεια εκτελείται. Οι interpreted γλώσσες συνήθως έχουν μικρότερο κύκλο ανάπτυξης/ εντοπισμού σφαλμάτων από τις μεταγλωττισμένες, αν και τα προγράμματά τους γενικά εκτελούνται πιο αργά. Βλ. επίσηςinteractive.
- τερματισμός λειτουργίας διερμηνέα¶
Όταν ζητείται τερματισμός λειτουργίας, ο διερμηνέας της Python εισέρχεται σε μια ειδική φάση όπου απελευθερώνει σταδιακά όλους τους διατιθέμενους πόρους, όπως λειτουργικές μονάδες και πολλαπλές κρίσιμες εσωτερικές δομές. Επίσης πραγματοποιεί αρκετές κλήσεις στοσυλλέκτης σκουπιδιών. Αυτό μπορεί να ενεργοποιήσει την εκτέλεση κώδικα σε καταστροφείς που ορίζονται από το χρήστη ή σε callbacks ασθενούς ανταποκρίσεις. Ο κώδικας που εκτελείται κατά τη φάση τερματισμού λειτουργίας μπορεί να συναντήσει διάφορες εξαιρέσεις, καθώς οι πόροι στους οποίους βασίζεται ενδέχεται να μην λειτουργούν πλέον (συνήθη παραδείγματα είναι οι λειτουργικές μονάδες βιβλιοθήκης ή ο μηχανισμός ειδοποιήσεων).
Ο βασικός λόγος τερματισμού λειτουργίας του διερμηνέα είναι ότι το
__main__
module ή ολοκληρώθηκε η εκτέλεση του κώδικα που έτρεχε.- iterable¶
Ένα αντικείμενο ικανό να επιστρέψει τα μέλη του ένα κάθε φορά. Παραδείγματα iterables περιλαμβάνουν όλους του τύπους ακολουθιών (όπως
list
,str
, καιtuple
) και μερικούς τύπους μη ακολουθίας όπωςdict
,αντικείμενο αρχείου, και αντικείμενα οποιονδήποτε κλάσεων που μπορούν να οριστούν με μια μέθοδο__iter__()
ή με μία μέθοδο__getitem__()
που υλοποιεί τη σημασιολογίαsequence.Τα iterables μπορούν να χρησιμοποιηθούν σε ένα
for
βρόχο και σε πολλά άλλα σημεία όπου χρειάζεται μια ακολουθία (zip()
,map()
, …). Όταν ένα iterable αντικείμενο μεταβιβάζεται ως όρισμα στην ενσωματωμένη συνάρτησηiter()
, επιστρέφει έναν iterator για αντικείμενο. Αυτός ο iterator είναι καλός για ένα πέρασμα από ένα σύνολο τιμών. Όταν χρησιμοποιείται επαναληπτικά, συνήθως δεν είναι απαραίτητο να καλέσετε τοiter()
ή να ασχοληθείτε μόνοι σας με αντικείμενα iterator. Η δήλωσηfor
το κάνει αυτόματα για εσάς, δημιουργώντας μια προσωρινή μεταβλητή χωρίς όνομα για να κρατά τον iterator για την διάρκεια του βρόχου. Βλ. επίσηςiterator,sequence, καιgenerator.- iterator¶
Ένα αντικείμενο που αντιπροσωπεύει μια ροή δεδομένων. Επαναλαμβανόμενες κλήσεις προς τη μέθοδο
__next__()
του iterator (ή μεταβίβαση του στην ενσωματωμένη συνάρτησηnext()
) επιστρέφουν διαδοχικά στοιχεία στην ροή. Όταν όχι περισσότερα δεδομένα είναι διαθέσιμα εγείρεται μια εξαίρεσηStopIteration
. Σε αυτό το σημείο, το αντικείμενο iterator εξαντλείται και τυχόν περαιτέρω κλήσεις στη μέθοδο__next__()
απλώς απλά εγείρουν ξανά τοStopIteration
. Οι iterators πρέπει να έχουν μια μέθοδο__iter__()
που επιστρέφει το ίδιο το αντικείμενο iterator, έτσι ώστε κάθε iterator να είναι επίσης iterable και μπορεί να χρησιμοποιηθεί στα περισσότερα μέρη όπου γίνονται αποδεκτοί και άλλοι iterators. Μια αξιοσημείωτη εξαίρεση είναι ο κώδικας που επιχειρεί πολλαπλά περάσματα iteration. Ένα αντικείμενο κοντέινερ (όπως έναlist
) παράγει έναν καθαρά νέο iterator κάθε φορά που κάθε φορά που μεταβιβάζεται στην συνάρτησηiter()
ή τον χρησιμοποιείται σε ένανfor
βρόχο. Εάν επιχειρήσετε αυτό με έναν iterator απλώς θα επιστρέψετε το ίδιο εξαντλημένο αντικείμενο iterator που χρησιμοποιήθηκε στο προηγούμενο πέρασμα iteration , κάνοντας το να φαίνεται σαν ένα άδειο κοντέινερ.Περισσότερες πληροφορίες μπορούν να βρεθούν στοΤύποι Iterator.
Το CPython δεν εφαρμόζει με συνέπεια την απαίτηση να ορίζει ένας iterator
__iter__()
. Επίσης σημειώστε ότι η έκδοση CPython με ελεύθερη υποστήριξη νημάτων δεν εγγυάται την ασφάλεια νημάτων για διαδικασίες με iterators.- συνάρτηση key¶
Μια συνάρτηση κλειδί ή μια συνάρτηση ταξινόμησης είναι μια δυνατότητα κλήσης που επιστρέφει μια τιμή που χρησιμοποιείται για ταξινόμηση ή διάταξη. Για παράδειγμα,
locale.strxfrm()
χρησιμοποιείται για την παραγωγή ενός κλειδιού ταξινόμησης που γνωρίζει τις συμβάσεις ταξινόμησης για συγκεκριμένες τοπικές ρυθμίσεις.Ένα αριθμός εργαλείων στην Python δέχεται βασικές συναρτήσεις για τον έλεγχο του τρόπου με τον οποίο τα στοιχεία ταξινομούνται ή ομαδοποιούνται. Αυτά περιέχουν
min()
,max()
,sorted()
,list.sort()
,heapq.merge()
,heapq.nsmallest()
,heapq.nlargest()
, καιitertools.groupby()
.Υπάρχουν διάφοροι τρόποι για να δημιουργήσετε μια συνάρτηση κλειδιού. Για παράδειγμα. η μέθοδος
str.lower()
μπορεί να χρησιμεύσει ως συνάρτηση κλειδί για την περίπτωση μη διάκρισης πεζών-κεφαλαίων. Εναλλακτικά, μια συνάρτηση κλειδιού μπορεί να δημιουργηθεί από μιαlambda
έκφραση όπωςlambdar:(r[0],r[2])
. Επίσης,operator.attrgetter()
,operator.itemgetter()
καιoperator.methodcaller()
είναι τρεις κατασκευαστές βασικών συναρτήσεων. Βλ. τοΤαξινόμηση HOW TO για παραδείγματα δημιουργίας και χρήσης βασικών συναρτήσεων.- όρισμα keyword¶
Βλ.argument.
- lambda¶
Μια ανώνυμη ενσωματωμένη συνάρτηση που αποτελείται από μια μοναδικήexpression η οποία αξιολογείται όταν καλείται η συνάρτηση. Η σύνταξη για τη δημιουργία μιας συνάρτησης lambda είναι
lambda[parameters]:expression
- LBYL¶
Look before you leap. Αυτό το στυλ κωδικοποίησης ελέγχει ρητά τις προϋποθέσεις πριν πραγματοποιήσει κλήσεις ή αναζητήσεις. Αυτό το στυλ έρχεται σε αντίθεση με την προσέγγισηEAFP και χαρακτηρίζεται από την παρουσία πολλών δηλώσεων
if
.Σε ένα περιβάλλον πολλαπλών νημάτων, η προσέγγιση LBYL μπορεί να διακινδυνεύσει να εισάγει μια συνθήκη αγώνα μεταξύ «the Looking» και «the leaping». Για παράδειγμα ο κώδικας,
ifkeyinmapping:returnmapping[key]
μπορεί να αποτύχει εάν ένα άλλο νήμα αφαιρέσει τοkey από τοmapping μετά τη δοκιμή, αλλά πριν από την αναζήτηση. Αυτό το πρόβλημα μπορεί να λυθεί με κλειδώματα ή χρησιμοποιώντας την προσέγγιση EAFP.- λεξικός αναλυτής¶
Επίσημη ονομασία για τονtokenizer · βλ.token.
- λίστα¶
Ένα ενσωματωμένο Pythonsequence. Παρά το όνομα του, μοιάζει περισσότερο με έναν πίνακα σε άλλες γλώσσες παρά με μια συνδεδεμένη λίστα, καθώς η πρόσβαση στα στοιχεί είναιO(1).
- list comprehension¶
Ένα συμπαγής τρόπος για να επεξεργαστείτε όλα ή μέρος των στοιχείων σε μια ακολουθία και να επιστρέψετε μια λίστα με τα αποτελέσματα.
result=['{:#04x}'.format(x)forxinrange(256)ifx%2==0]
δημιουργεί μια λίστα συμβολοσειρών που περιέχουν ζυγούς δεκαεξαδικούς αριθμούς (0x..) στο εύρος από 0 έως 255. Η πρότασηif
είναι προαιρετική. Εάν παραλειφθεί, όλα τα στοιχεία στοrange(256)
υποβάλλονται σε επεξεργασία.- loader¶
Ένα αντικείμενο που φορτώνει ένα module. Πρέπει να ορίζει τις μεθόδους
exec_module()
καιcreate_module()
για την υλοποίηση της διεπαφήςLoader
. Ένας loader συνήθως επιστρέφεται με έναfinder. Δείτε επίσης:- τοπική κωδικοποίηση¶
Στο Unix, είναι η κωδικοποίηση της τοπική ρύθμισης LC_CTYPE. Μπορεί να ρυθμιστεί με
locale.setlocale(locale.LC_CTYPE,new_locale)
.Στα Windows, είναι η code page ANSI (π.χ.
"cp1252"
).Στο Android και το VxWorks, η Python χρησιμοποιεί το
"utf-8"
ως τοπική κωδικοποίηση.locale.getencoding()
μπορεί να χρησιμοποιηθεί για την ανάκτηση της τοπικής κωδικοποίησης.Βλ. επίσης τοfilesystem encoding and error handler.
- μαγική μέθοδος¶
Ένα άτυπο συνώνυμο γιαspecial method.
- mapping¶
Ένα αντικείμενο κοντέινερ που υποστηρίζει αυθαίρετες αναζητήσεις κλειδιών και υλοποιεί τις μεθόδους που καθορίζονται στο
collections.abc.Mapping
ήcollections.abc.MutableMapping
abstract base classes. Τα παραδείγματα περιλαμβάνουνdict
,collections.defaultdict
,collections.OrderedDict
καιcollections.Counter
.- meta path finder¶
Έναςfinder που επιστράφηκε με αναζήτηση στο
sys.meta_path
. Οι finders μετα-διαδρομής σχετίζονται, αλλά διαφέρουν από ταfinders entry διαδρομής.Βλ.
importlib.abc.MetaPathFinder
για τις μεθόδους που υλοποιούν οι meta path finders.- μετα-κλάση¶
Η κλάση μιας κλάσης. Οι ορισμοί κλάσης δημιουργούν ένα όνομα κλάσης, ένα λεξικό κλάσης και μια λίστα βασικών κλάσεων. Η μετα-κλάση είναι υπεύθυνη για την απόκτηση αυτών των τριών ορισμάτων και την δημιουργία της κλάσης. Οι περισσότερες αντικειμενοστρεφείς γλώσσες προγραμματισμού παρέχουν μια προεπιλεγμένη υλοποίηση. Αυτό που κάνει την Python ξεχωριστή είναι ότι είναι δυνατή η δημιουργία προσαρμοσμένων μετακλάσεων. Οι περισσότεροι χρήστες δεν χρειάζονται ποτέ αυτό το εργαλείο, αλλά όταν παραστεί ανάγκη, αυτό το εργαλείο, οι μετα-κλάσεις μπορούν να παρέχουν ισχυρές, κομψές λύσεις. Έχουν χρησιμοποιηθεί για την καταγραφή πρόσβασης χαρακτηριστικών, την προσθήκη ασφάλειας νημάτων, την παρακολούθηση δημιουργίας αντικειμένων, την υλοποίησηsingletons, και πολλές άλλες εργασίες.
Περισσότερες πληροφορίες μπορούν να βρεθούν στοMetaclasses.
- μέθοδος¶
Μια συνάρτηση που ορίζεται μέσα στο σώμα μιας κλάσης. Εάν καλείται ως χαρακτηριστικό μιας περίπτωσης αυτής της κλάσης, η μέθοδος θα λάβει αντικείμενο περίπτωσης ως πρώτο τηςargument (το οποίο συνήθως ονομάζεται
self
). Βλ.function καιnested scope.- σειρά ανάλυσης μεθόδων¶
Η Σειρά Ανάλυσης Μεθόδων είναι η σειρά με την οποία οι βασικές κλάσεις αναζητούνται για ένα μέλος κατά την αναζήτησης. Βλ.The Python 2.3 Method Resolution Order για λεπτομέρειες του αλγορίθμου που χρησιμοποιείται από τον διερμηνέα της Python από την έκδοση 2.3.
- module¶
Ένα αντικείμενο που χρησιμεύει ως οργανωτική μονάδα του κώδικα της Python. Τα modules έχουν έναν χώρο ονομάτων που περιέχει αυθαίρετα αντικείμενα Python. Τα modules φορτώνονται στην Python με την διαδικασίαimporting.
Βλ. επίσηςpackage.
- τεχνικές προδιαγραφές module¶
Ένα namespace που περιέχει τις πληροφορίες που σχετίζονται με την εισαγωγή που χρησιμοποιούνται για την φόρτωση ενός module. Μια περίπτωση του
importlib.machinery.ModuleSpec
.Βλ. επίσηςModule specs.
- MRO¶
- mutable¶
Τα ευμετάβλητα αντικείμενα μπορούν να αλλάξουν τις τιμές αλλά να κρατήσουν τα
id()
. Βλ. επίσηςimmutable.- named tuple¶
Ο όρος «named tuple» εφαρμόζεται για οποιονδήποτε τύπο ή κλάση που κληρονομείται από την πλειάδα και των οποίων τα στοιχεία μπορούν να ευρετηριοποιηθούν είναι προσβάσιμα χρησιμοποιώντας επώνυμα χαρακτηριστικά. Ο τύπος ή η κλάση μπορεί να έχει και άλλα χαρακτηριστικά.
Πολλοί ενσωματωμένοι τύποι είναι named tuples, συμπεριλαμβανομένων των τιμών που επιστρέφονται από
time.localtime()
καιos.stat()
. Ένα άλλο παράδειγμα είναι τοsys.float_info
:>>>sys.float_info[1]# indexed access1024>>>sys.float_info.max_exp# named field access1024>>>isinstance(sys.float_info,tuple)# kind of tupleTrue
Ορισμένες αναγνωρισμένες πλειάδες είναι ενσωματωμένοι τύποι (όπως τα παραπάνω παραδείγματα). Εναλλακτικά, μια αναγνωρισμένη πλειάδα μπορεί να δημιουργηθεί από έναν ορισμό κανονικής κλάσης που κληρονομεί από
tuple
και που ορίζει έγκυρα πεδία. Μια τέτοια κλάση μπορεί να είναι γραμμένη με το χέρι ή μπορεί να δημιουργηθεί κληρονομώντας τοtyping.NamedTuple
, ή με την factory συνάρτησηcollections.namedtuple()
. Οι τελευταίες τεχνικές προσθέτουν επίσης μερικές επιπλέον μεθόδους που μπορεί να μην βρεθούν σε χειρόγραφες ή ενσωματωμένες πλειάδες με όνομα.- namespace¶
Το μέρος όπου αποθηκεύεται μια μεταβλητή. Τα namespaces υλοποιούνται ως λεξικά. Υπάρχουν οι τοπικοί, οι καθολικοί και οι ενσωματωμένοι namespaces καθώς και οι ένθετοι namespaces σε αντικείμενα (σε μεθόδους). Για παράδειγμα οι συναρτήσεις
builtins.open
καιos.open()
διακρίνονται από τους χώρους ονομάτων τους. Οι χώροι ονομάτων βοηθούν επίσης την αναγνωσιμότητα και τη συντηρησιμότητα καθιστώντας σαφές ποιο module υλοποιεί μια λειτουργία. Για παράδειγμα, γράφονταςrandom.seed()
ήitertools.islice()
καθιστά σαφές ότι αυτές οι συναρτήσεις υλοποιούνται από τα modulerandom
καιitertools
, αντίστοιχα.- πακέτο namespace¶
Έναpackage που χρησιμεύει μόνο ως κοντέινερ για υποπακέτα. Τα πακέτα χώρου ονομάτων μπορεί να μην έχουν φυσική αναπαράσταση και συγκεκριμένα να μην είναι σαν έναregular package επειδή δεν έχουν το
__init__.py
αρχείο.Τα πακέτα χώρου ονομάτων επιτρέπουν σε πολλά πακέτα με δυνατότητα εγκατάστασης μεμονωμένα να έχουν ένα κοινό γονικό πακέτο. Διαφορετικά, συνίσταται η χρήση ενόςregular package.
Για περισσότερες πληροφορίες, δείτε τοPEP 420 και τοNamespace packages.
Βλ. επίσηςmodule.
- nested scope¶
Η δυνατότητα αναφοράς σε μια μεταβλητή σε έναν περικλειόμενο ορισμό. Για παράδειγμα μια συνάρτηση που ορίζεται μέσα σε μια άλλη συνάρτηση μπορεί να αναφέρεται σε μεταβλητές στην εξωτερική συνάρτηση. Σημειώστε ότι τα ένθετα πεδία από προεπιλογή λειτουργούν μόνο για αναφορά και όχι για εκχώρηση. Οι τοπικές μεταβλητές διαβάζονται και γράφονται στο εσωτερικό πεδίο εφαρμογής. Ομοίως, οι καθολικές μεταβλητές διαβάζουν και γράφουν στον καθολικό χώρο ονομάτων. Το
nonlocal
επιτρέπει την εγγραφή σε εξωτερικά πεδία.- κλάση νέου στυλ¶
Το παλιό όνομα για το είδος των κλάσεων χρησιμοποιείται πλέον για όλα τα αντικείμενα. Σε παλιότερες εκδόσεις της Python, μόνο οι κλάσεις νέου στυλ μπορούσαν να χρησιμοποιήσουν τις νεότερες, ευέλικτες δυνατότητες της Python όπως
__slots__
, descriptors, ιδιότητες__getattribute__()
, μέθοδοι κλάσης, και στατικές μέθοδοι.- αντικείμενο¶
Οποιαδήποτε δεδομένα με κατάσταση (χαρακτηριστικά ή τιμή) και καθορισμένη συμπεριφορά (μέθοδοι). Επίσης, η τελική βασική κλάση οποιασδήποτεnew-style class.
- βελτιστοποιημένο πεδίο ορατότητας (scope)¶
Ένα πεδίο ορατότητας (scope) όπου τα ονόματα των τοπικών μεταβλητών είναι γνωστό με βεβαιότητα στον μεταγλωττιστή κατά τη μεταγλώττιση του κώδικα, επιτρέποντας τη βελτιστοποίηση της πρόσβασης για ανάγνωση και εγγραφή σε αυτά τα ονόματα. Οι τοπικοί χώροι ονομάτων για συναρτήσεις, γεννήτριες, συναρτήσεις coroutine, συμπτύξεις (comprehensions) και εκφράσεις γεννητριών βελτιστοποιούνται με αυτόν τον τρόπο. Σημείωση: οι περισσότερες βελτιστοποιήσεις του διερμηνέα εφαρμόζονται σε όλα τα πεδία ορατότητας· μόνο εκείνες που βασίζονται σε γνωστό σύνολο τοπικών και μη τοπικών μεταβλητών περιορίζονται σε βελτιστοποιημένα πεδία ορατότητας.
- πακέτο¶
Ένα Pythonmodule που μπορεί να περιέχει submodules ή αναδρομικά, υποπακέτα. Τεχνικά, ένα πακέτο είναι μια λειτουργική μονάδα Python με ένα
__path__
χαρακτηριστικό.Βλ. επίσηςregular package καιnamespace package.
- παράμετρος¶
Μια έγκυρη οντότητα σε έναν ορισμόfunction (ή μέθοδος) που καθορίζει έναargument (ή σε ορισμένες περιπτώσεις, ορίσματα) που μπορεί να δεχθεί η συνάρτηση. Υπάρχουν πέντε είδη παραμέτρων:
λέξη-κλειδί ή θέση: καθορίζει ένα όρισμα που μπορεί να μεταβιβαστεί είτεθέσεως ή ωςόρισμα λέξης-κλειδιού. Αυτό είναι το προεπιλεγμένο είδος παραμέτρου, για παράδειγμαfoo καιbar στα ακόλουθα:
deffunc(foo,bar=None):...
θέσεως μόνο: καθορίζει ένα όρισμα που μπορεί να παρέχεται μόνο από τη θέση. Οι παράμετροι μόνο θέσης μπορούν να οριστούν συμπεριλαμβάνοντας έναν χαρακτήρα
/
στη λίστα παραμέτρων του ορισμού συνάρτησης μετά από αυτές, για παράδειγμαposonly1 καιposonly2 στα εξής:deffunc(posonly1,posonly2,/,positional_or_keyword):...
λέξης-κλειδί μόνο: καθορίζει ένα όρισμα που μπορεί να παρέχεται μόνο με λέξη κλειδί. Οι παράμετροι μόνο για λέξη-κλειδί μπορούν να οριστούν συμπεριλαμβάνοντας μια παράμετρο θέσης ή σκέτο
*
στη λίστα παραμέτρων του ορισμού συνάρτησης πριν από αυτές, για παράδειγμαkw_only1 καιkw_only2 στα ακόλουθα:deffunc(arg,*,kw_only1,kw_only2):...
μεταβλητή θέσης: καθορίζει ότι μπορεί να παρασχεθεί μια αυθαίρετη ακολουθία ορισμάτων θέσης (επιπλέον των ορισμάτων θέσης που είναι ήδη αποδεκτά από άλλες παραμέτρους). Μια τέτοια παράμετρος μπορεί να οριστεί προσαρτώντας το όνομα της παραμέτρου με
*
, για παράδειγμαargs στα ακόλουθα:deffunc(*args,**kwargs):...
μεταβλητή λέξη-κλειδί: καθορίζει ότι μπορούν να παρέχονται αυθαίρετα πολλά ορίσματα λέξης-κλειδιού (επιπλέον των ορισμάτων λέξης κλειδιού που είναι αποδεκτά από άλλες παραμέτρους). Μια τέτοια παράμετρος μπορεί να οριστεί προσαρτώντας το όνομα της παραμέτρου με
**
, για παράδειγμαkwargs όπως παραπάνω.
Οι παράμετροι μπορούν να καθορίσουν τόσο τα προαιρετικά όσο και τα απαιτούμενα ορίσματα , καθώς και προεπιλεγμένες τιμές για ορισμένα προαιρετικά ορίσματα.
Βλ. επίσης τηνargument καταχώριση ευρετηρίου, την ερώτηση FAQ σχετικά μεη διαφορά μεταξύ ορισμάτων και παραμέτρων, την κλάση
inspect.Parameter
, την ενότηταFunction definitions καιPEP 362.- path entry¶
Μια μεμονωμένη τοποθεσία στοimport path την οποία συμβουλεύεται οpath based finder για να βρει modules για εισαγωγή.
- path entry finder¶
Έναςfinder που επιστρέφεται από έναν καλούμενο στο
sys.path_hooks
(δηλαδή έναpath entry hook) που ξέρει πως να εντοπίζει modules μεpath entry.Βλ.
importlib.abc.PathEntryFinder
για τις μεθόδους που ο entry finder διαδρομής υλοποιεί.- path entry hook¶
Ένα καλούμενο στη λίστα
sys.path_hooks
, το οποίο επιστρέφει έναpath entry finder εάν ξέρει πως να βρίσκει module σε μια συγκεκριμένηpath entry.- path based finder¶
Ένα από τα προεπιλεγμέναmeta path finders που αναζητά έναimport path για modules.
- path-like αντικείμενο¶
Ένα αντικείμενο που αντιπροσωπεύει ένα path συστήματος αρχείων. Ένα αντικείμενο path είναι είτε ένα αντικείμενο
str
ήbytes
που αντιπροσωπεύει ένα path ή ένα αντικείμενο που υλοποιεί το πρωτόκολλοos.PathLike
. Ένα αντικείμενο που υποστηρίζει το πρωτόκολλοos.PathLike
μπορεί να μετατραπεί σε path συστήματος αρχείωνstr
ήbytes
καλώντας την συνάρτησηos.fspath()
” ταos.fsdecode()
καιos.fsencode()
μπορούν να χρησιμοποιηθούν για την εγγύηση ενός αποτελέσματοςstr
ήbytes
, αντίστοιχα. Εισήχθη από τονPEP 519.- PEP¶
Πρόταση Βελτίωσης Python. Ένα PEP είναι ένα έγγραφο σχεδιασμού που παρέχει πληροφορίες στην κοινότητα Python ή περιγράφει μια νέα δυνατότητα για την Python ή τις διαδικασίες ή το περιβάλλον της. Τα PEP θα πρέπει να παρέχουν μια συνοπτική τεχνική προδιαγραφή και μια λογική για τα προτεινόμενα χαρακτηριστικά.
Τα PEP προορίζονται να είναι οι κύριοι μηχανισμοί για την πρόταση σημαντικών νέων χαρακτηριστικών, για τη συλλογή πληροφοριών της κοινότητας για ένα ζήτημα και για την τεκμηρίωση των αποφάσεων σχεδιασμού που έχουν εισαχθεί στην Python. Ο συγγραφέας του PEP είναι υπεύθυνος για την οικοδόμηση συναίνεσης εντός της κοινότητας και την τεκμηρίωση αντίθετων απόψεων.
Βλ.PEP 1.
- τμήμα¶
Ένα σύνολο από αρχεία σε έναν μόνο κατάλογο (ενδεχομένως αποθηκευμένο σε αρχείοzip) που συμβάλλουν σε ένα namespace πακέτο, όπως ορίζεται στοPEP 420.
- όρισμα θέσης¶
Βλ.argument.
- provisional API¶
Ένα provisional API είναι αυτό που έχει εσκεμμένα εξαιρεθεί από τις backwards εγγυήσεις συμβατότητας της τυπικής βιβλιοθήκης. Αν και δεν αναμένονται σημαντικές αλλαγές σε τέτοιες διεπαφές, εφόσον επισημαίνονται ως προσωρινές, αλλαγές μη backwards συμβατότητας (μέχρι και κατάργηση της διεπαφής) μπορεί να προκύψουν εάν κριθεί απαραίτητο από τους βασικούς προγραμματιστές. Τέτοιες αλλαγές δεν θα γίνουν άσκοπα – θα συμβούν μόνο εάν αποκαλυφθούν σοβαρά θεμελιώδη ελαττώματα που παραλείφθηκαν πριν από τη συμπερίληψη του API.
Ακόμη και για provisional API, οι μη backwards συμβατές αλλαγές θεωρούνται «λύση έσχατης ανάγκης»- θα εξακολουθεί να γίνεται κάθε προσπάθεια για να βρεθεί μια λύση backwards συμβατή σε τυχόν εντοπισμένα προβλήματα.
Αυτή η διαδικασία επιτρέπει στην τυπική βιβλιοθήκη να συνεχίσει να εξελίσσεται με την πάροδο του χρόνου, χωρίς να κλειδώνει προβληματικά σφάλματα σχεδιασμού για εκτεταμένες χρονικές περιόδους. Βλ.PEP 411 για περισσότερες λεπτομέρειες.
- provisional πακέτο¶
Βλ.provisional API.
- Python 3000¶
Ψευδώνυμο για το σύνολο εκδόσεων Python 3.x (επινοήθηκε πριν από πολύ καιρό όταν η κυκλοφορία της έκδοσης 3 ήταν κάτι στο μακρινό μέλλον.) Αυτό ονομάζεται επίσης ως συντομογραφία «Py3k».
- Pythonic¶
Μια ιδέα ή ένα κομμάτι κώδικα που ακολουθεί πιστά τα πιο κοινά ιδιώματα της γλώσσας Python, αντί να υλοποιεί κώδικα χρησιμοποιώντας έννοιες κοινές σε άλλες γλώσσες. Για παράδειγμα, ένα κοινό ιδίωμα στην Python είναι να κάνει μια επανάληψη πάνω από όλα τα στοιχεία ενός iterable χρησιμοποιώντας μια δήλωση
for
. Πολλές άλλες γλώσσες που δεν έχουν αυτόν τον τύπο κατασκευής, έτσι οι άνθρωποι που δεν είναι εξοικειωμένοι με την Python χρησιμοποιούν μερικές φορές έναν αριθμητικό μετρητή:foriinrange(len(food)):print(food[i])
Αντίθετα, μια πιο καθαρή μέθοδος Pythonic:
forpieceinfood:print(piece)
- αναγνωρισμένο όνομα¶
Ένα όνομα με κουκκίδες που δείχνει τη «διαδρομή» από το καθολικό εύρος ενός module σε μια κλάση, συνάρτηση ή μέθοδο που ορίζεται σε αυτήν την ενότητα, όπως ορίζεται στοPEP 3155. Για συναρτήσεις και κλάσεις ανώτατου επιπέδου, το αναγνωρισμένο όνομα είναι ίδιο με το όνομα του αντικειμένου:
>>>classC:...classD:...defmeth(self):...pass...>>>C.__qualname__'C'>>>C.D.__qualname__'C.D'>>>C.D.meth.__qualname__'C.D.meth'
Όταν χρησιμοποιείται για αναφορά σε modules , τοπλήρως αναγνωρισμένο όνομα σημαίνει ολόκληρο το διακεκομμένο path προς το module, συμπεριλαμβανομένων τυχόν γονικών πακέτων π.χ.
email.mime.text
:>>>importemail.mime.text>>>email.mime.text.__name__'email.mime.text'
- πλήθος αναφοράς¶
Ο αριθμός των αναφορών σε ένα αντικείμενο. Όταν το πλήθος αναφορών ενός αντικειμένου πέσει στο μηδέν, κατανέμεται. Μερικά αντικείμενα είναιimmortal και έχουν πλήθος αναφορών που δεν τροποποιούνται ποτέ και επομένως τα αντικείμενα δεν κατανέμονται ποτέ. Η καταμέτρηση αναφορών γενικά δεν είναι ορατή στον κώδικα της Python, αλλά είναι βασικό στοιχείο της υλοποίησηςCPython. Οι προγραμματιστές μπορούν να καλέσουν τη συνάρτηση
sys.getrefcount()
για να επιστρέψουν το πλήθος αναφοράς για ένα συγκεκριμένο αντικείμενο.- κανονικό πακέτο¶
Ένα παραδοσιακόpackage, όπως ένας κατάλογος που περιέχει ένα
__init__.py
αρχείο.Βλ. επίσηςnamespace package.
- REPL¶
Ακρωνύμιο του «read–eval–print loop», άλλη ονομασία για τοinteractive περιβάλλον του διερμηνέα.
- __slots__¶
Μια δήλωση μέσα σε μια κλάση που εξοικονομεί μνήμη δηλώνοντας εκ των προτέρων χώρο για παράδειγμα χαρακτηριστικά και εξαλείφοντας λεξικά στιγμιοτύπων. Αν και δημοφιλής, η τεχνική είναι κάπως δύσκολο να γίνει σωστή και προορίζεται καλύτερα για σπάνιες περιπτώσεις όπου υπάρχει μεγάλος αριθμός στιγμιοτύπων σε μια εφαρμογή κρίσιμης-μνήμης.
- ακολουθία¶
Έναςiterable που υποστηρίζει την αποτελεσματική πρόσβαση στο στοιχείο χρησιμοποιώντας ακέραιους δείκτες μέσω της ειδική μεθόδου
__getitem__()
και ορίζει μια μέθοδο__len__()
που επιστρέφει το μήκος της ακολουθίας. Ορισμένοι ενσωματωμένοι τύποι ακολουθιών είναιlist
,str
,tuple
, καιbytes
. Σημειώστε ότι τοdict
υποστηρίζει επίσης__getitem__()
και__len__()
, αλλά θεωρείται αντιστοίχιση και όχι ακολουθία επειδή οι αναζητήσεις χρησιμοποιούν αυθαίρεταhashable κλειδιά παρά ακέραιοι.Η αφηρημένη βασική κλάση
collections.abc.Sequence
ορίζει μια πολύ πιο πλούσια διεπαφή που ξεπερνά τα απλά__getitem__()
και__len__()
, addingcount()
,index()
,__contains__()
, και__reversed__()
. Οι τύποι που υλοποιούν αυτήν την διευρυμένη διεπαφή μπορούν να καταχωρηθούν ρητά χρησιμοποιώνταςregister()
. Για περισσότερη τεκμηρίωση σχετικά με τις μεθόδους ακολουθίας γενικά, ανατρέξτε στοCommon Sequence Operations.- set comprehension¶
Ένας συμπαγής τρόπος για να επεξεργαστείτε όλα ή μέρος των στοιχείων σε ένα iterable και να επιστραφεί ένα σύνολο με τα αποτελέσματα.
results={cforcin'abracadabra'ifcnotin'abc'}
δημιουργεί το σύνολο συμβολοσειρών{'r','d'}
. Βλ.Displays for lists, sets and dictionaries.- μοναδικό dispatch¶
Μια μορφή dispatchgeneric function όπου η υλοποίηση επιλέγεται με βάση τον τύπο ενός μεμονωμένου ορίσματος.
- slice¶
Ένα αντικείμενο που συνήθως περιέχει ένα τμήμα μιας ακολουθίαςsequence. Δημιουργείται ένα slice χρησιμοποιώντας τη σημείωση subscript,
[]
με άνω και κάτω τελείες μεταξύ αριθμών όταν δίνονται πολλοί, όπως στοvariable_name[1:3:5]
. Η σημείωση αγκύλης (subscript) χρησιμοποιεί εσωτερικά αντικείμεναslice
.- απαρχαιωμένη με ήπιο τρόπο¶
Ένα απαρχαιωμένο με ήπιο τρόπο API δεν θα πρέπει να χρησιμοποιείται σε νέο κώδικα, αλλά είναι ασφαλές σε ήδη υπάρχοντα κώδικα να το χρησιμοποιεί. Το API παραμένει τεκμηριωμένο και δοκιμασμένο, αλλά δεν θα ενισχυθεί περαιτέρω.
Η κατάργηση με ήπιο τρόπο, σε αντίθεση με την κανονική κατάργηση, δεν σχεδιάζει την κατάργηση του API και δεν θα εκπέμπει ειδοποιήσεις
- ειδική μέθοδος¶
Μια μέθοδος που καλείται σιωπηρά από την Python για να εκτελέσει μια συγκεκριμένη λειτουργία σε έναν τύπο, όπως η προσθήκη. Τέτοιες μέθοδοι έχουνε ονόματα που ξεκινούν και τελειώνουν με διπλές κάτω παύλες. Οι ειδικές μέθοδοι τεκμηριώνονται στοSpecial method names.
- δήλωση¶
Μια πρόταση είναι μέρος μιας σουίτας (ένα «μπλοκ» κώδικα). Μια πρόταση είναι είτε έναςexpression είτε μια από πολλές δομές με μια λέξη-κλειδί όπως
if
,while
ήfor
.- ελεγκτής στατικού τύπου¶
Ένα εξωτερικό εργαλείο όπου διαβάζει τον Python κώδικα και τον αναλύει, αναζητώντας προβλήματα όπως λανθασμένοι τύποι. Βλ. επίσηςtype hints και το module
typing
.- strong reference¶
Στο C API της Python, μια ισχυρή αναφορά είναι μια αναφορά σε ένα αντικείμενο που ανήκει στον κώδικα που περιέχει την αναφορά. Η ισχυρή αναφορά λαμβάνεται καλώντας το
Py_INCREF()
όταν η αναφορά δημιουργείται και απελευθερώνεται μεPy_DECREF()
όταν διαγραφεί η αναφορά.Η συνάρτηση
Py_NewRef()
μπορεί να χρησιμοποιηθεί για τη δημιουργία ισχυρής αναφοράς σε ένα αντικείμενο. Συνήθως, η συνάρτησηPy_DECREF()
πρέπει να καλείται στην ισχυρή αναφορά πριν βγει από το εύρος της ισχυρής αναφοράς, για να αποφευχθεί η διαρροή μιας αναφοράς.Βλ. επίσηςborrowed reference.
- κωδικοποίηση κειμένου¶
Μια συμβολοσειρά στην Python είναι μια ακολουθία σημείων κώδικα Unicode (στο εύρος
U+0000
–U+10FFFF
). Για να αποθηκεύσετε ή να μεταφέρετε μια συμβολοσειρά, πρέπει να σειριοποιηθεί ως δυαδική ακολουθία.Η σειριοποίηση μιας συμβολοσειράς σε μια δυαδική ακολουθία είναι γνωστή ως «κωδικοποίηση» , και η αναδημιουργία της συμβολοσειράς από την δυαδική ακολουθία είναι γνωστή ως «αποκωδικοποίηση».
Υπάρχει μια ποικιλία διαφορετικής σειριοποίησης κειμένουcodecs, οι οποίοι συλλογικά αναφέρονται ως «κωδικοποιήσεις κειμένου».
- αρχείο κειμένου¶
Έναfile object ικανό να διαβάζει και να γράφει αντικείμενα
str
. Συχνά, ένα αρχείο κειμένου αποκτά πραγματικά πρόσβαση σε μια ροή δυαδική ροή δεδομένων και χειρίζεται αυτόματα τηνtext encoding. Παραδείγματα αρχείων κειμένου είναι αρχεία που ανοίγουν σε λειτουργία κειμένου ('r'
ή'w'
),sys.stdin
,sys.stdout
, και στιγμιότυπα τουio.StringIO
.Βλ. επίσηςbinary file για ένα αντικείμενο αρχείου με δυνατότητα ανάγνωσης και εγγραφήςδυαδικά αντικείμενα.
- κατάσταση νήματος¶
Οι πληροφορίες που χρησιμοποιούνται από τη ροή εκτέλεσης τηςCPython για την εκτέλεση σε ένα νήμα λειτουργικού συστήματος. Για παράδειγμα, αυτό περιλαμβάνει την τρέχουσα εξαίρεση, εάν υπάρχει, και την κατάσταση του διερμηνέα bytecode.
Κάθε κατάσταση νήματος είναι συνδεδεμένη με ένα μόνο νήμα λειτουργικού συστήματος, αλλά τα νήματα μπορεί να έχουν πολλές διαθέσιμες καταστάσεις νήματος. Το πολύ, μία από αυτές μπορεί να είναιattached ταυτόχρονα.
Απαιτείται έναattached thread state για την κλήση του μεγαλύτερου μέρους του C API της Python, εκτός εάν μια συνάρτηση τεκμηριώνεται ρητά από το αντίθετο. Ο διερμηνέας bytecode εκτελείται μόνο υπό κατάσταση συνημμένου νήματος.
Κάθε κατάσταση νήματος ανήκει σε έναν μόνο διερμηνέα, αλλά κάθε διερμηνέα μπορεί να έχει πολλές καταστάσεις νήματος, συμπεριλαμβανομένων πολλαπλών για το ίδιο νήμα λειτουργικού συστήματος. Οι καταστάσεις νήματος από πολλαπλούς διερμηνείς μπορεί να είναι συνδεδεμένος με το ίδιο νήμα, αλλά μόνο μία μπορεί να είναιattached σε αυτό το νήμα σε οποιαδήποτε δεδομένη στιγμή.
Δείτε τοThread State and the Global Interpreter Lock για περισσότερες πληροφορίες.
- λεκτικό σύμβολο (token)¶
Μια μικρή μονάδα πηγαίου κώδικα, που παράγεται από τονlexical analyzer (γνωστό και ωςαναλυτή (tokenizer)). Ονόματα, αριθμοί, συμβολοσειρές, τελεστές αλλαγές γραμμής και παρόμοια στοιχεία αναπαρίστανται ως λεκτικά σύμβολα (tokens).
Το module
tokenize
εκθέτει τον λεξικό αναλυτή της Python. Το moduletoken
περιέχει πληροφορίες για τους διάφορους τύπους λεκτικών συμβόλων (tokens).- συμβολοσειρά τριπλών εισαγωγικών¶
Μια συμβολοσειρά που δεσμεύεται από τρεις περιπτώσεις είτε ενός εισαγωγικού (») ή μιας αποστρόφου (“). Αν και δεν παρέχουν καμία λειτουργικότητα που δεν είναι διαθέσιμη με συμβολοσειρές με μονά εισαγωγικά, είναι χρήσιμες για διαφόρους λόγους. Σας επιτρέπουν να συμπεριλάβετε μονά και διπλά εισαγωγικά χωρίς διαφυγή σε μια συμβολοσειρά και μπορούν να εκτείνονται σε πολλές γραμμές χωρίς τη χρήση του χαρακτήρα συνέχεια, καθιστώντας τα ιδιαίτερα χρήσιμα κατά τη σύνταξη εγγράφων με συμβολοσειρές.
- τύπος¶
Ο τύπος ενός Python αντικειμένου καθορίζει τι είδους αντικείμενο είναι∙ κάθε αντικείμενο έχει έναν τύπο. Ο τύπος ενός αντικειμένου είναι προσβάσιμος ως το χαρακτηριστικό
__class__
ή μπορεί να ανακτηθεί μεtype(obj)
.- type alias¶
Ένα συνώνυμο για έναν τύπο, που δημιουργείται με την ανάθεση τύπου σε ένα αναγνωριστικό.
Τα type aliases είναι χρήσιμα για την απλοποίησηtype alias. Για παράδειγμα:
defremove_gray_shades(colors:list[tuple[int,int,int]])->list[tuple[int,int,int]]:pass
μπορεί να γίνει πιο ευανάγνωστο όπως:
Color=tuple[int,int,int]defremove_gray_shades(colors:list[Color])->list[Color]:pass
Βλ.
typing
καιPEP 484, που περιγράφει αυτήν την λειτουργικότητα.- type hint¶
Έναςannotation που καθορίζει τον αναμενόμενο τύπο για μια μεταβλητή, ένα χαρακτηριστικό κλάσης ή μια παράμετρο συνάρτησης ή τιμή επιστροφής.
Οι υποδείξεις τύπων (type hints) είναι προαιρετικές και δεν επιβάλλονται από την Python, αλλά είναι χρήσιμες γιαstatic type checkers. Μπορούν επίσης να βοηθήσουν τους IDEs με τη συμπλήρωση και την αναδιαμόρφωση κώδικα.
Υποδείξεις τύπου (type hints) για καθολικές μεταβλητές, χαρακτηριστικά κλάσης και συναρτήσεις , αλλά όχι τοπικές μεταβλητές, μπορούν να προσπελαστούν χρησιμοποιώντας το
typing.get_type_hints()
.Βλ.
typing
καιPEP 484, που περιγράφει αυτήν την λειτουργικότητα.- καθολικές νέες γραμμές¶
Ένα τρόπος ερμηνείας ροών κειμένου στον οποίο όλα τα ακόλουθα αναγνωρίζονται ως λήξεις μιας γραμμής: η σύμβαση τέλους γραμμής του Unix
'\n'
, η σύμβαση των Windows'\r\n'
, και την παλιά σύμβαση Macintosh'\r'
. Βλ.PEP 278 καιPEP 3116, καθώς καιbytes.splitlines()
για πρόσθετη χρήση.- annotation μεταβλητής¶
Έναςannotation μια μεταβλητής ή ενός χαρακτηριστικού κλάσης.
Όταν annotating μια μεταβλητή ή ένα χαρακτηριστικό κλάσης, η ανάθεση είναι προαιρετική:
classC:field:'annotation'
Τα annotations μεταβλητών χρησιμοποιούνται συνήθως γιαtype hints: για παράδειγμα αυτή η μεταβλητή αναμένεται να λάβει τιμές
int
:count:int=0
Η σύνταξη annotation μεταβλητής περιγράφεται στην ενότηταAnnotated assignment statements.
Βλ.function annotation,PEP 484 καιPEP 526, που περιγράφουν αυτή τη λειτουργία. Δείτε επίσηςAnnotations Best Practices για βέλτιστες πρακτικές σχετικά με την εργασία με σχολιασμούς.
- virtual environment¶
Ένα συνεργατικά απομονωμένο περιβάλλον χρόνου εκτέλεσης που επιτρέπει στους χρήστες και τις εφαρμογές της Python να εγκαταστήσουν και να αναβαθμίσουν πακέτα διανομής Python χωρίς να παρεμβαίνουν στη συμπεριφορά άλλων εφαρμογών Python που εκτελούνται στο ίδιο σύστημα.
Βλ. επίσης
venv
.- virtual machine¶
Ένας υπολογιστής ορίζεται εξ ολοκλήρου από το λογισμικό. Η εικονική μηχανή της Python εκτελεί τοbytecode που εκπέμπεται από τον μεταγλωττιστή bytecode.
- Zen της Python¶
Κατάλογος σχεδιαστικών αρχών και φιλοσοφιών που είναι χρήσιμες για την κατανόηση και τη χρήση της γλώσσας. Ο κατάλογος μπορεί να βρεθεί πληκτρολογώντας «
importthis
» στην διαδραστική κονσόλα.