Γλωσσάρι
********

">>>"
   Η προεπιλεγμένη Python εντολή του *interactive* shell. Συχνά
   εμφανίζεται για παραδείγματα κώδικα που μπορούν να εκτελεστούν
   διαδραστικά στον interpreter.

"..."
   Μπορεί να αναφέρεται σε:

   * Η προεπιλεγμένη Python εντολή του *interactive* shell κατά την
     εισαγωγή του κώδικα για ένα μπλοκ κώδικα με εσοχή, όταν βρίσκεται
     μέσα σε ένα ζεύγος ταιριασμένων αριστερών και δεξιών delimiters
     (παρενθέσεις, αγκύλες, άγκιστρα ή τριπλά εισαγωγικά), ή μετά τον
     καθορισμό ενός decorator.

   * Η μορφή με τις τρεις τελείες του αντικειμένου Ellipsis.

αφηρημένη βασική κλάση
   Οι αφηρημένες βασικές κλάσεις συμπληρώνουν το *duck-typing*
   παρέχοντας έναν τρόπο ορισμού interfaces όταν άλλες τεχνικές όπως η
   "hasattr()" θα ήταν αδέξιες ή ανεπαίσθητα λανθασμένες (για
   παράδειγμα με magic methods). Τα ABC (abstract base class) εισάγουν
   εικονικές υποκλάσεις, οι οποίες είναι κλάσεις που δεν
   κληρονομούνται από μια κλάση, αλλά εξακολουθούν να αναγνωρίζονται
   από το "isinstance()" και από το "issubclass()"' βλ. την τεκμηρίωση
   του module "abc". Η Python διαθέτει πολλά ενσωματωμένα ABC για
   δομές δεδομένων (στο module "collections.abc"), αριθμούς (στο
   module "numbers"), ροές (στο module μονάδα "io"), εισαγωγή finders
   και loaders (στο module "importlib.abc"). Μπορείτε να δημιουργήσετε
   τα δικά σας ABC με το module "abc".

συνάρτηση annotate
   A callable that can be called to retrieve the *annotations* of an
   object. Annotate functions are usually *functions*, automatically
   generated as the "__annotate__" attribute of functions, classes,
   and modules. Annotate functions are a subset of *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
   Ένα αντικείμενο που ελέγχει το ορατό περιβάλλον σε μια δήλωση
   "async with" ορίζοντας τις μεθόδους "__aenter__()" και
   "__aexit__()". Που εισήχθη από **PEP 492**.

ασύγχρονος generator
   Μια συνάρτηση που επιστρέφει έναν *asynchronous generator
   iterator*. Μοιάζει με μια συνάρτηση coroutine που ορίζεται με
   "async def" εκτός από ότι περιέχει εκφράσεις "yield" για την
   παραγωγή μιας σειράς τιμών που μπορούν να χρησιμοποιηθούν σε έναν
   "async for" βρόχο.

   Συνήθως αναφέρεται σε μια συνάρτηση ασύγχρονου generator, αλλά
   μπορεί να αναφέρεται σε έναν *ασύγχρονο generator iterator* σε
   ορισμένα contexts. Σε περιπτώσεις όπου το επιδιωκόμενο νόημα δεν
   είναι σαφές, με την χρήση των πλήρων όρων αποφεύγεται η ασάφεια.

   Μια συνάρτηση ασύγχρονου generator μπορεί να περιέχει εκφράσεις
   "await" , καθώς και δηλώσεις "async for", και "async with".

ασύγχρονος generator iterator
   Ένα αντικείμενο που δημιουργήθηκε από μια συνάρτηση *asynchronous
   generator*.

   Αυτός είναι ένας *asynchronous iterator* που όταν καλείται
   χρησιμοποιώντας την μέθοδο "__anext__()" επιστρέφει ένα αναμενόμενο
   αντικείμενο που θα εκτελέσει στο σώμα της συνάρτησης του ασύγχρονου
   generator μέχρι την επόμενη "yield" έκφραση.

   Κάθε "yield" αναστέλλει προσωρινά την επεξεργασία, θυμάται την
   κατάσταση εκτέλεσης (συμπεριλαμβανομένων των τοπικών μεταβλητών και
   των δηλώσεων *try* σε εκκρεμότητα). Όταν ο *ασύγχρονος generator
   iterator* συνεχίσει αποτελεσματικά με άλλο αναμενόμενο που
   επιστρέφεται από "__anext__()", συνεχίζει από εκεί που σταμάτησε.
   Βλ. **PEP 492** και **PEP 525**.

ασύγχρονος iterable
   Ένα αντικείμενο, που μπορεί να χρησιμοποιηθεί σε μια δήλωση "async
   for". Πρέπει να επιστρέφει ένα *asynchronous iterator* από την
   μέθοδο "__aiter__()". Που εισήχθη από **PEP 492**.

ασύγχρονος iterator
   Ένα αντικείμενο που υλοποιεί τις μεθόδους "__aiter__()" και
   "__anext__()". Η μέθοδος "__anext__()" πρέπει να επιστρέφει ένα
   *awaitable* αντικείμενο. Το "async for" επιλύει τα αναμενόμενα που
   επιστρέφονται από τη μέθοδο "__anext__()" ενός ασύγχρονου iterator
   έως ότου εγείρει μια εξαίρεση "StopAsyncIteration". Εισήχθη από
   **PEP 492**.

atomic operation
   An operation that appears to execute as a single, indivisible step:
   no other thread can observe it half-done, and its effects become
   visible all at once.  Python does not guarantee that high-level
   statements are atomic (for example, "x += 1" performs multiple
   bytecode operations and is not atomic).  Atomicity is only
   guaranteed where explicitly documented.  See also *race condition*
   and *data race*.

κατάσταση συνδεδεμένου νήματος
   Ένα *thread state* που είναι ενεργή για το τρέχον νήμα του
   λειτουργικού συστήματος.

   Όταν επισυνάπτεται ένας *thread state*, το νήμα του λειτουργικού
   συστήματος έχει πρόσβαση στο πλήρες Python C API και μπορεί να
   καλέσει με ασφάλεια τον διερμηνέα bytecode.

   Εκτός εάν μια συνάρτηση αναφέρει ρητά το αντίθετο, η προσπάθεια
   κλήσης του C API χωρίς μια συνημμένη κατάσταση νήματος θα οδηγήσει
   ένα μοιραίο σφάλμα ή σε απροσδιόριστη συμπεριφορά.  Μια κατάσταση
   νήματος μπορεί να συνδεθεί και να αποσυνδεθεί ρητά από τον χρήση
   μέσω του C API ή έμμεσα από τον χρόνο εκτέλεσης,
   συμπεριλαμβανομένων των κλήσεων αποκλεισμού C και από τον διερμηνέα
   bytecode μεταξύ των κλήσεων.

   On most builds of Python, having an attached thread state implies
   that the caller holds the *GIL* for the current interpreter, so
   only one OS thread can have an attached thread state at a given
   moment. In *free-threaded builds* of Python, threads can
   concurrently hold an attached thread state, allowing for true
   parallelism of the bytecode interpreter.

χαρακτηριστικό
   Μια τιμή που σχετίζεται με ένα αντικείμενο που συνήθως αναφέρεται
   με όνομα χρησιμοποιώντας εκφράσεις με κουκκίδες. Για παράδειγμα,
   εάν ένα αντικείμενο *o* έχει ένα χαρακτηριστικό *a* θα αναφέρεται
   ως *o.a*.

   Είναι δυνατό να δώσουμε σε ένα αντικείμενο ένα χαρακτηριστικό που
   το όνομα του δεν είναι αναγνωριστικό όπως ορίζεται από Ονόματα
   (αναγνωριστικά και λέξεις-κλειδιά), για παράδειγμα χρησιμοποιώντας
   "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" είναι μια
   *μεταβλητή κλεισίματος*:

      def outer():
          x = 0
          def inner():
              nonlocal x
              x += 1
              print(x)
          return inner

   Λόγο του χαρακτηριστικού "codeobject.co_freevars" (το οποίο, παρά
   την ονομασία του, περιλαμβάνει μόνο τα ονόματα των μεταβλητών
   κλεισίματος και όχι όλες τις αναφερόμενες ελεύθερες μεταβλητές),
   χρησιμοποιείται μερικές φορές ο πιο γενικός όρος *free variable*
   ακόμη και όταν γίνεται ειδική αναφορά σε μεταβλητές κλεισίματος.

μιγαδικός αριθμός
   Μια επέκταση του γνωστού συστήματος πραγματικών αριθμών στο οποίο
   όλοι οι αριθμοί εκφράζονται ως άθροισμα ενός πραγματικού μέρους και
   ενός φανταστικού μέρους. Οι φανταστικοί αριθμοί είναι πραγματικά
   πολλαπλάσια της φανταστικής μονάδα (η τετραγωνική ρίζα του "-1"),
   που συχνά γράφονται "i" στα μαθηματικά ή "j" στη μηχανική. Η Python
   έχει ενσωματωμένη υποστήριξη για μιγαδικούς αριθμούς, οι οποίοι
   γράφονται με αυτόν τον τελευταίο συμβολισμό' το φανταστικό μέρος
   γράφεται με το επίθημα "j", π.χ., "3+1j". Για να αποκτήσετε
   πρόσβαση σε σύνθετα ισοδύναμα το module "math", χρησιμοποιήστε το
   "cmath". Η χρήση μιγαδικών αριθμών είναι ένα αρκετά προηγμένο
   μαθηματικό χαρακτηριστικό. εάν δεν γνωρίζετε την ανάγκη τους, είναι
   σχεδόν σίγουρο ότι μπορείτε να τα αγνοήσετε με ασφάλεια.

concurrency
   The ability of a computer program to perform multiple tasks at the
   same time.  Python provides libraries for writing programs that
   make use of different forms of concurrency.  "asyncio" is a library
   for dealing with asynchronous tasks and coroutines.  "threading"
   provides access to operating system threads and "multiprocessing"
   to operating system processes. Multi-core processors can execute
   threads and processes on different CPU cores at the same time (see
   *parallelism*).

concurrent modification
   When multiple threads modify shared data at the same time.
   Concurrent modification without proper synchronization can cause
   *race conditions*, and might also trigger a *data race*, data
   corruption, or both.

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 μπορεί να εισαχθούν, να εξαχθούν και να συνεχιστούν
   σε πολλά διαφορετικά σημεία. Μπορούν να υλοποιήσουν με την δήλωση
   "async def". Βλ. επίσης **PEP 492**.

coroutine συνάρτηση
   Μια συνάρτηση που επιστρέφει ένα *coroutine* αντικείμενο.  Μια
   συνάρτηση coroutine μπορεί να ορίζεται από τη δήλωση "async def",
   και μπορεί να περιέχει "await", "async for", και "async with"
   λέξεις κλειδιά. Αυτές εισήχθησαν από το **PEP 492**.

CPython
   Η κανονική υλοποίηση της γλώσσας προγραμματισμού Python, όπως
   διανέμεται στο python.org. Ο όρος "CPython" χρησιμοποιείται όταν
   είναι απαραίτητο για την διάκριση αυτής της υλοποίησης από άλλες
   όπως η *Jython* ή η *IronPython*.

τρέχον πλαίσιο
   Το *context* ("contextvars.Context" αντικείμενο) που
   χρησιμοποιείται αυτή τη στιγμή από τα αντικείμενα "ContextVar" για
   να προσπελάσει (να πάρει ή να ορίσει) τις τιμές των *context
   variables*.  Κάθε νήμα έχει το δικό του τρέχον συμφραζόμενο Τα
   πλαίσια για την εκτέλεση ασύγχρονων εργασιών (βλ. "asyncio")
   συνδέουν κάθε εργασία με ένα συμφραζόμενο, το οποίο γίνεται το
   τρέχον συμφραζόμενο όποτε η εργασία ξεκινά ή συνεχίζει την
   εκτέλεση.

κυκλική απομόνωση
   Μια υποομάδα ενός ή περισσότερων αντικειμένων που αναφέρονται
   μεταξύ τους σχηματίζοντας έναν  κύκλο αναφορών, αλλά δεν
   αναφέρονται από άλλα αντικείμενα εκτός της ομάδας.  Ο σκοπός του
   *cyclic garbage collector* είναι να εντοπίζει αυτές τις ομάδες και
   να σπάει του κύκλος αναφορών ώστε να μπορεί να αποδεσμευτεί η
   μνήμη.

data race
   A situation where multiple threads access the same memory location
   concurrently, at least one of the accesses is a write, and the
   threads do not use any synchronization to control their access.
   Data races lead to *non-deterministic* behavior and can cause data
   corruption. Proper use of *locks* and other *synchronization
   primitives* prevents data races.  Note that data races can only
   happen in native code, but that *native code* might be exposed in a
   Python API.  See also *race condition* and *thread-safe*.

deadlock
   A situation in which two or more tasks (threads, processes, or
   coroutines) wait indefinitely for each other to release resources
   or complete actions, preventing any from making progress.  For
   example, if thread A holds lock 1 and waits for lock 2, while
   thread B holds lock 2 and waits for lock 1, both threads will wait
   indefinitely.  In Python this often arises from acquiring multiple
   locks in conflicting orders or from circular join/await
   dependencies.  Deadlocks can be avoided by always acquiring
   multiple *locks* in a consistent order.  See also *lock* and
   *reentrant*.

decorator
   Μια συνάρτηση που επιστρέφει μια άλλη συνάρτηση, συνήθως
   εφαρμόζεται ως μετασχηματισμός συνάρτησης χρησιμοποιώντας την
   "@wrapper" σύνταξη. Συνηθισμένα παραδείγματα για τους decorators
   είναι "classmethod()" και "staticmethod()".

   Η σύνταξη του decorator είναι απλώς καλλωπιστική, οι ακόλουθοι δύο
   ορισμοί συναρτήσεων είναι σημασιολογικά ισοδύναμοι:

      def f(arg):
          ...
      f = staticmethod(f)

      @staticmethod
      def f(arg):
          ...

   Η ίδια έννοια υπάρχει για τις κλάσεις, αλλά χρησιμοποιείται
   λιγότερο συχνά εκεί. Βλ. την τεκμηρίωση για function definitions
   και class definitions για περισσότερα σχετικά με τους decorators.

descriptor
   Κάθε αντικείμενο που ορίζει τις μεθόδους "__get__()", "__set__()",
   ή "__delete__()". Όταν ένα χαρακτηριστικό κλάσης είναι descriptor,
   η ειδική δεσμευτική του συμπεριφορά ενεργοποιείται κατά την
   αναζήτηση χαρακτηριστικών. Κανονικά, χρησιμοποιώντας *a.b* για να
   λάβετε, να ορίσετε ή να διαγράψετε ένα χαρακτηριστικό αναζητά το
   αντικείμενο με το όνομα *b* στο λεξικό της κλάσης για *a*, αλλά εάν
   το *b* είναι descriptor, καλείται η αντίστοιχη μέθοδος descriptor.
   Η κατανόηση των descriptors είναι το κλειδί για την καλύτερη
   κατανόηση της Python γιατί αυτό αποτελεί την βάση για πολλά
   χαρακτηριστικά όπως συναρτήσεις, μεθόδους, ιδιότητες, μέθοδοι
   κλάσης στατικές μέθοδοι, και αναφορά σε σούπερ κλάσεις.

   Για περισσότερες πληροφορίες αναφορικά με τις μεθόδους των
   descriptors, βλ. see Υλοποίηση Περιγραφέων ή το Πρακτικός οδηγός
   για τη χρήση του Descriptor.

λεξικό
   Ένα προσεταιριστικός πίνακα, όπου αυθαίρετα κλειδιά
   αντιστοιχίζονται σε τιμές. Τα κλειδιά μπορεί να είναι οποιοδήποτε
   αντικείμενο με μεθόδους "__hash__()" και "__eq__()". Ονομάζεται ως
   hash στο Perl.

κατανόηση λεξικού
   Ένα συμπαγής τρόπος για να επεξεργαστείτε όλα ή μέρος των στοιχείων
   σε ένα επαναληπτικό και να επιστραφεί ένα με λεξικό με τα
   αποτελέσματα. "results = {n: n ** 2 for n in range(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*.

dunder
   Ένας ανεπίσημος συντομογραφικός όρος για το "double underscore",
   που χρησιμοποιείται όταν μιλάμε για μια *special method*. Για
   παράδειγμα, "__init__" προφέρεται συχνά ως "dunder init".

EAFP
   Πιο εύκολο να ζητήσεις συγχώρεση παρά άδεια.  Αυτό το κοινό στυλ
   προγραμματισμού σε Python προϋποθέτει την ύπαρξη έγκυρων κλειδιών ή
   χαρακτηριστικών και συλλαμβάνει εξαιρέσεις εάν η υπόθεση αποδεχθεί
   εσφαλμένη. Αυτό το καθαρό και γρήγορο στυλ χαρακτηρίζεται από την
   παρουσία πολλών δηλώσεων "try" και "except". Η τεχνική έρχεται σε
   αντίθεση με το στυλ που είναι *LBYL* κοινό σε πολλές άλλες γλώσσες,
   όπως η C.

αξιολόγηση συνάρτησης
   Μια συνάρτηση που μπορεί να κληθεί για να αξιολογήσει ένα αδρανές
   χαρακτηριστικό ενός αντικειμένου, όπως η τιμή των ψευδωνύμων τύπου
   που δημιουργούνται με την πρόταση "type".

έκφραση
   Ένα κομμάτι σύνταξης που μπορεί να αξιολογηθεί σε κάποια τιμή. Με
   άλλα λόγια, μια έκφραση είναι μια συσσώρευση στοιχείων έκφρασης
   όπως κυριολεξία, ονόματα, πρόσβαση χαρακτηριστικών, τελεστές ή
   κλήσεις συναρτήσεων που όλες επιστρέφουν μια τιμή. Σε αντίθεση με
   πολλές άλλες γλώσσες, δεν είναι όλες οι γλωσσικές δομές εκφράσεις.
   Υπάρχουνε επίσης *statement*s που δεν μπορούν να χρησιμοποιηθούν ως
   εκφράσεις, όπως το "while".  Οι αναθέσεις τιμών είναι επίσης
   δηλώσεις όχι εκφράσεις.

module επέκτασης
   Ένα module γραμμένο σε C ή C++, που χρησιμοποιείται από το C API
   της Python για να αλληλεπιδράσουν με τον πυρήνα και με τον κώδικα
   του χρήστη.

f-string
f-strings
   Οι κυριολεκτικές συμβολοσειρές χρησιμοποιούνται με πρόθεμα "'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 και loaders και "importlib" για περισσότερες
   λεπτομέρειες.

ακέραια διαίρεση
   Η μαθηματική διαίρεση που στρογγυλοποιεί προς τα κάτω στον
   κοντινότερο ακέραιο. Ο τελεστής ακέραιας διαίρεσης είναι "//". Για
   παράδειγμα, η έκφραση "11 // 4" αξιολογείται σε "2" σε αντίθεση με
   την τιμή "2.75" που επιστρέφεται από την διαίρεση με υποδιαστολή.
   Σημείωση ότι "(-11) // 4" κάνει "-3" επειδή αυτή είναι η
   στρογγυλοποίηση *προς τα κάτω* του "-2.75". Βλ. **PEP 238**.

δωρεάν νήμα
   Ένα μοντέλο νημάτων όπου πολλά νήματα μπορούν να εκτελούν Python
   bytecode ταυτόχρονα μέσα στον ίδιο διερμηνέα.  Αυτό έρχεται σε
   αντίθεση με το *global interpreter lock*, το οποίο επιτρέπει σε ένα
   μόνο νήμα να εκτελεί Python bytecode κάθε φορά.  Δείτε το **PEP
   703**.

free-threaded build
   A build of *CPython* that supports *free threading*, configured
   using the "--disable-gil" option before compilation.

   See Python support for free threading.

δωρεάν μεταβλητή
   Τυπικά, όπως ορίζεται στο language execution model, μια ελεύθερη
   μεταβλητή είναι οποιαδήποτε μεταβλητή χρησιμοποιείται σε ένα
   namespace που δεν είναι τοπική μεταβλητή σε εκείνο το namespace.
   Δείτε το *closure variable* για παράδειγμα. Πρακτικά, λόγω του
   ονόματος του χαρακτηριστικού "codeobject.co_freevars", ο όρος
   χρησιμοποιείται επίσης μερικές φορές ως συνώνυμο της *closure
   variable*.

συνάρτηση
   Μια σειρά από δηλώσεις που επιστρέφουν κάποια τιμή σε αυτόν που την
   κάλεσε. Σε αυτές μπορούν να περαστούν κανένα ή περισσότερα
   *ορίσματα* που μπορεί να χρησιμοποιηθεί για την εκτέλεση. Βλ.
   επίσης τις ενότητες *parameter*, *method*, και the Function
   definitions.

συνάρτηση annotation
   Ένας *annotation* μιας παραμέτρου συνάρτησης ή μιας τιμής
   επιστροφής.

   Οι συναρτήσεις annotations συχνά χρησιμοποιούνται για *υποδείξεις
   τύπου*: για παράδειγμα, αυτή η συνάρτηση αναμένεται να πάρει δύο
   ορίσματα "int" και επίσης αναμένεται να έχει μία επιστρεφόμενη τιμή
   "int":

      def sum_two_numbers(a: int, b: int) -> int:
         return a + 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*i for i in range(10))         # sum of squares 0, 1, 4, ... 81
      285

γενική συνάρτηση
   Μια συνάρτηση που αποτελείται από πολλαπλές συναρτήσεις που
   υλοποιούν την ίδια λειτουργία για διαφορετικούς τύπους. Ποια
   υλοποίηση πρέπει να χρησιμοποιηθεί κατά τη διάρκεια μια κλήσης
   καθορίζεται από τον αλγόριθμο αποστολής.

   Βλ. επίσης την καταχώρηση του *single dispatch*, τον decorator
   "functools.singledispatch()" και **PEP 443**.

γενικός τύπος
   Ένας *type* που μπορεί να παραμετροποιηθεί' συνήθως μια container
   class, όπως "list" ή "dict". Χρησιμοποιείται για *type hints* και
   *annotations*.

   Για περισσότερες λεπτομέρειες, βλ. generic alias types **PEP 483**,
   **PEP 484**, **PEP 585**, και το module "typing".

GIL
   Βλ. *global interpreter lock*.

global interpreter lock
   Ο μηχανισμός που χρησιμοποιείται από τον διερμηνέα *CPython* για να
   διασφαλίσει ότι μόνο ένα νήμα εκτελεί Python *bytecode* κάθε φορά.
   Αυτό απλοποιεί την υλοποίηση CPython δημιουργώντας το μοντέλο
   αντικειμένου (συμπεριλαμβανομένων κρίσιμων ενσωματωμένων τύπων όπως
   π.χ. "dict") έμμεσα ασφαλές έναντι ταυτόχρονης πρόσβασης. Το
   κλείδωμα ολόκληρου του διερμηνέα διευκολύνει τον διερμηνέα να είναι
   πολλαπλών νημάτων, εις βάρος του μεγάλου μέρους του παραλληλισμού
   που παρέχουν οι μηχανές πολλαπλών επεξεργαστών.

   Ωστόσο, ορισμένες λειτουργικές μονάδες επέκτασης, είτε τυπικές είτε
   τρίτων, έχουν σχεδιαστεί έτσι ώστε να απελευθερώνουν το GIL όταν
   εκτελούν εργασίες εντατικών υπολογισμών όπως συμπίεση ή
   κατακερματισμός. Επίσης, το GIL απελευθερώνεται πάντα όταν
   εκτελείτε I/O.

   Από την έκδοση Python 3.13, ο GIL μπορεί να απενεργοποιηθεί
   χρησιμοποιώντας τη ρύθμιση "--disable-gil" κατά τη διαμόρφωση της
   κατασκευής. Μετά την κατασκευή της Python με αυτήν με αυτήν την
   επιλογή, ο κώδικας πρέπει να εκτελείται με την επιλογή "-X gil=0" ή
   αφού ρυθμιστεί η μεταβλητή περιβάλλοντος "PYTHON_GIL=0". Αυτή η
   δυνατότητα επιτρέπει βελτιωμένη απόδοση για εφαρμογές πολλαπλών
   νημάτων και διευκολύνει τη χρήση των επεξεργαστών πολλαπλών πυρήνων
   με αποδοτικό τρόπο. Για περισσότερες λεπτομέρειες, δείτε το **PEP
   703**.

   Σε προηγούμενες εκδόσεις του C API της Python, μια συνάρτηση μπορεί
   να δηλώνει ότι απαιτεί την τήρηση του GIL για να χρησιμοποιηθεί.
   Αυτό αναφέρεται στην ύπαρξη μιας κατάστασης *attached thread
   state*.

global state
   Data that is accessible throughout a program, such as module-level
   variables, class variables, or C static variables in *extension
   modules*.  In multi-threaded programs, global state shared between
   threads typically requires synchronization to avoid *race
   conditions* and *data races*.

hash-based pyc
   Ένα αρχείο κρυφής μνήμης *bytecode* που χρησιμοποιεί τον
   κατακερματισμό και όχι τον χρόνο τροποποίησης του αντίστοιχου
   αρχείου προέλευσης για να προσδιορίσει την εγκυρότητα του. Βλ.
   Ακύρωση cached bytecode.

hashable
   Ένα αντικείμενο είναι *hashable* εάν έχει μια τιμή κατακερματισμού
   που δεν αλλάζει ποτέ κατά τη διάρκεια της ζωής του (χρειάζεται μια
   μέθοδο "__hash__()") , και μπορεί να συγκριθεί με άλλα αντικείμενα
   (χρειάζεται μια μέθοδο "__eq__()") . Τα *hashable* αντικείμενα που
   συγκρίνονται ως προς την ισότητα τους πρέπει να έχουν την ίδια τιμή
   κατακερματισμού.

   Η ύπαρξη *hashable* κάνει ένα αντικείμενο να μπορεί να
   χρησιμοποιηθεί ως κλειδί λεξικού και ως μέλος ενός συνόλου, επειδή
   αυτές οι δομές δεδομένων χρησιμοποιούν τιμές κατακερματισμού.

   Τα περισσότερα από τα αμετάβλητα ενσωματωμένα αντικείμενα της
   Python μπορούν να κατακερματιστούν' τα μεταβλητά κοντέινερ (όπως οι
   λίστες ή τα λεξικά) δεν είναι' τα αμετάβλητα κοντέινερ (όπως
   πλειάδες και τα frozesets) μπορούν να κατακερματιστούν μόνο εάν τα
   στοιχεία τους είναι κατακερματισμένα. Τα αντικείμενα που είναι
   στιγμιότυπα κλάσεων που ορίζονται από το χρήστη μπορούν να
   κατακερματιστούν από προεπιλογή. Όλα συγκρίνονται άνισα εκτός από
   τον εαυτό τους) και η τιμή κατακερματισμού τους προέρχεται από το
   "id()".

IDLE
   Ένα ολοκληρωμένο περιβάλλον ανάπτυξης και μάθησης για την Python.
   IDLE --- Python editor and shell είναι ένα βασικό περιβάλλον
   επεξεργασίας και διερμηνέα που συνοδεύεται από την τυπική διανομή
   της Python.

Αθάνατο
   *Αθάνατα αντικείμενα* είναι μια λεπτομέρεια υλοποίησης της CPython
   που εισήχθη στην **PEP 683**.

   Εάν ένα αντικείμενο είναι αθάνατο, ο *reference count* του δεν
   τροποποιείται, και επομένως δεν εκχωρείται ποτέ ενώ εκτελείται ο
   διερμηνέας. Για παράδειγμα, "True" και "None" είναι αθάνατα στην
   CPython.

   Τα αθάνατα αντικείμενα μπορούν να αναγνωριστούν μέσω της
   "sys._is_immortal()", ή μέσω της "PyUnstable_IsImmortal()" στο C
   API.

immutable
   An object with a fixed value.  Immutable objects include numbers,
   strings and tuples.  Such an object cannot be altered.  A new
   object has to be created if a different value has to be stored.
   They play an important role in places where a constant hash value
   is needed, for example as a key in a dictionary.  Immutable objects
   are inherently *thread-safe* because their state cannot be modified
   after creation, eliminating concerns about improperly synchronized
   *concurrent modification*.

εισαγόμενο path
   Μια λίστα από τοποθεσίες (ή *καταχωρίσεις διαδρομής*) που μπορούν
   να αναζητηθούν *path based finder* για να εισαχθούν modules. Κατά
   την διαδικασία εισαγωγής, αυτή η λίστα με τοποθεσίες συνήθως
   έρχεται από "sys.path", αλλά για τα υποπακέτα μπορεί επίσης να
   έρθει από το χαρακτηριστικό του πακέτου γονέα "__path__".

εισαγωγή
   Η διαδικασία κατά την οποία ο κώδικας της Python σε ένα module
   είναι διαθέσιμη στον κώδικα Python ενός άλλου module.

εισαγωγέας
   Ένα αντικείμενο μπορεί και να αναζητεί και να φορτώνει ένα module'
   και ένα *finder* και *loader* αντικείμενο.

index
   A numeric value that represents the position of an element in a
   *sequence*.

   In Python, indexing starts at zero. For example, "things[0]" names
   the *first* element of "things"; "things[1]" names the second one.

   In some contexts, Python allows negative indexes for counting from
   the end of a sequence, and indexing using *slices*.

   See also *subscript*.

διαδραστικός
   Η 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:** CPython does not consistently
   apply the requirement that an iterator define "__iter__()". And
   also please note that *free-threaded* CPython does not guarantee
   *thread-safe* behavior of iterator operations.

key
   A value that identifies an entry in a *mapping*. See also
   *subscript*.

συνάρτηση key
   Μια συνάρτηση κλειδί ή μια συνάρτηση ταξινόμησης είναι μια
   δυνατότητα κλήσης που επιστρέφει μια τιμή που χρησιμοποιείται για
   ταξινόμηση ή διάταξη. Για παράδειγμα, "locale.strxfrm()"
   χρησιμοποιείται για την παραγωγή ενός κλειδιού ταξινόμησης που
   γνωρίζει τις συμβάσεις ταξινόμησης για συγκεκριμένες τοπικές
   ρυθμίσεις.

   Ένα αριθμός εργαλείων στην Python δέχεται βασικές συναρτήσεις για
   τον έλεγχο του τρόπου με τον οποίο τα στοιχεία ταξινομούνται ή
   ομαδοποιούνται. Αυτά περιέχουν "min()", "max()", "sorted()",
   "list.sort()", "heapq.merge()", "heapq.nsmallest()",
   "heapq.nlargest()", και "itertools.groupby()".

   There are several ways to create a key function.  For example. the
   "str.casefold()" method can serve as a key function for case
   insensitive sorts.  Alternatively, a key function can be built from
   a "lambda" expression such as "lambda r: (r[0], r[2])".  Also,
   "operator.attrgetter()", "operator.itemgetter()", and
   "operator.methodcaller()" are three key function constructors.  See
   the Sorting HOW TO for examples of how to create and use key
   functions.

όρισμα keyword
   Βλ. *argument*.

lambda
   Μια ανώνυμη ενσωματωμένη συνάρτηση που αποτελείται από μια μοναδική
   *expression* η οποία αξιολογείται όταν καλείται η συνάρτηση. Η
   σύνταξη για τη δημιουργία μιας συνάρτησης lambda είναι "lambda
   [parameters]: expression"

LBYL
   Look before you leap.  Αυτό το στυλ κωδικοποίησης ελέγχει ρητά τις
   προϋποθέσεις πριν πραγματοποιήσει κλήσεις ή αναζητήσεις.  Αυτό το
   στυλ έρχεται σε αντίθεση με την προσέγγιση *EAFP* και
   χαρακτηρίζεται από την παρουσία πολλών δηλώσεων "if".

   In a multi-threaded environment, the LBYL approach can risk
   introducing a *race condition* between "the looking" and "the
   leaping".  For example, the code, "if key in mapping: return
   mapping[key]" can fail if another thread removes *key* from
   *mapping* after the test, but before the lookup. This issue can be
   solved with *locks* or by using the *EAFP* approach.  See also
   *thread-safe*.

λεξικός αναλυτής
   Επίσημη ονομασία για τον *tokenizer* · βλ. *token*.

λίστα
   Ένα ενσωματωμένο Python *sequence*.  Παρά το όνομα του, μοιάζει
   περισσότερο με έναν πίνακα σε άλλες γλώσσες παρά με μια συνδεδεμένη
   λίστα, καθώς η πρόσβαση στα στοιχεί είναι *O*(1).

list comprehension
   Ένα συμπαγής τρόπος για να επεξεργαστείτε όλα ή μέρος των στοιχείων
   σε μια ακολουθία και να επιστρέψετε μια λίστα με τα αποτελέσματα.
   "result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]"
   δημιουργεί μια λίστα συμβολοσειρών που περιέχουν ζυγούς
   δεκαεξαδικούς αριθμούς (0x..) στο εύρος από 0 έως 255. Η πρόταση
   "if" είναι προαιρετική. Εάν παραλειφθεί, όλα τα στοιχεία στο
   "range(256)" υποβάλλονται σε επεξεργασία.

lock
   A *synchronization primitive* that allows only one thread at a time
   to access a shared resource.  A thread must acquire a lock before
   accessing the protected resource and release it afterward.  If a
   thread attempts to acquire a lock that is already held by another
   thread, it will block until the lock becomes available.  Python's
   "threading" module provides "Lock" (a basic lock) and "RLock" (a
   *reentrant* lock).  Locks are used to prevent *race conditions* and
   ensure *thread-safe* access to shared data.  Alternative design
   patterns to locks exist such as queues, producer/consumer patterns,
   and thread-local state. See also *deadlock*, and *reentrant*.

lock-free
   An operation that does not acquire any *lock* and uses atomic CPU
   instructions to ensure correctness. Lock-free operations can
   execute concurrently without blocking each other and cannot be
   blocked by operations that hold locks. In *free-threaded* Python,
   built-in types like "dict" and "list" provide lock-free read
   operations, which means other threads may observe intermediate
   states during multi-step modifications even when those
   modifications hold the *per-object lock*.

loader
   Ένα αντικείμενο που φορτώνει ένα module. Πρέπει να ορίζει τις
   μεθόδους "exec_module()" και "create_module()" για την υλοποίηση
   της διεπαφής "Loader". Ένας loader συνήθως επιστρέφεται με ένα
   *finder*. Δείτε επίσης:

   * Finders και loaders

   * "importlib.abc.Loader"

   * **PEP 302**

τοπική κωδικοποίηση
   Στο 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*, και πολλές άλλες εργασίες.

   Περισσότερες πληροφορίες μπορούν να βρεθούν στο Μετα-κλάσεις.

μέθοδος
   Μια συνάρτηση που ορίζεται μέσα στο σώμα μιας κλάσης.  Εάν καλείται
   ως χαρακτηριστικό μιας περίπτωσης αυτής της κλάσης, η μέθοδος θα
   λάβει αντικείμενο περίπτωσης ως πρώτο της *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
   Βλ. *method resolution order*.

mutable
   An *object* with state that is allowed to change during the course
   of the program.  In multi-threaded programs, mutable objects that
   are shared between threads require careful synchronization to avoid
   *race conditions*.  See also *immutable*, *thread-safe*, and
   *concurrent modification*.

named tuple
   Ο όρος "named tuple" εφαρμόζεται για οποιονδήποτε τύπο ή κλάση που
   κληρονομείται από την πλειάδα και των οποίων τα στοιχεία μπορούν να
   ευρετηριοποιηθούν είναι προσβάσιμα χρησιμοποιώντας επώνυμα
   χαρακτηριστικά.  Ο τύπος ή η κλάση μπορεί να έχει και άλλα
   χαρακτηριστικά.

   Πολλοί ενσωματωμένοι τύποι είναι named tuples, συμπεριλαμβανομένων
   των τιμών που επιστρέφονται από "time.localtime()" και "os.stat()".
   Ένα άλλο παράδειγμα είναι το "sys.float_info":

      >>> sys.float_info[1]                   # indexed access
      1024
      >>> sys.float_info.max_exp              # named field access
      1024
      >>> isinstance(sys.float_info, tuple)   # kind of tuple
      True

   Ορισμένες αναγνωρισμένες πλειάδες είναι ενσωματωμένοι τύποι (όπως
   τα παραπάνω παραδείγματα). Εναλλακτικά, μια αναγνωρισμένη πλειάδα
   μπορεί να δημιουργηθεί από έναν ορισμό κανονικής κλάσης που
   κληρονομεί από "tuple" και που ορίζει έγκυρα πεδία. Μια τέτοια
   κλάση μπορεί να είναι γραμμένη με το χέρι ή μπορεί να δημιουργηθεί
   κληρονομώντας το "typing.NamedTuple", ή με την factory συνάρτηση
   "collections.namedtuple()". Οι τελευταίες τεχνικές προσθέτουν
   επίσης μερικές επιπλέον μεθόδους που μπορεί να μην βρεθούν σε
   χειρόγραφες ή ενσωματωμένες πλειάδες με όνομα.

namespace
   Το μέρος όπου αποθηκεύεται μια μεταβλητή.  Τα namespaces
   υλοποιούνται ως λεξικά. Υπάρχουν οι τοπικοί, οι καθολικοί και οι
   ενσωματωμένοι namespaces καθώς και οι ένθετοι namespaces σε
   αντικείμενα (σε μεθόδους).  Για παράδειγμα οι συναρτήσεις
   "builtins.open" και "os.open()" διακρίνονται από τους χώρους
   ονομάτων τους.  Οι χώροι ονομάτων βοηθούν επίσης την αναγνωσιμότητα
   και τη συντηρησιμότητα καθιστώντας σαφές ποιο module υλοποιεί μια
   λειτουργία. Για παράδειγμα, γράφοντας "random.seed()" ή
   "itertools.islice()" καθιστά σαφές ότι αυτές οι συναρτήσεις
   υλοποιούνται από τα module "random" και "itertools", αντίστοιχα.

πακέτο namespace
   Ένα *package* που χρησιμεύει μόνο ως κοντέινερ για υποπακέτα. Τα
   πακέτα χώρου ονομάτων μπορεί να μην έχουν φυσική αναπαράσταση και
   συγκεκριμένα να μην είναι σαν ένα *regular package* επειδή δεν
   έχουν το "__init__.py" αρχείο.

   Τα πακέτα χώρου ονομάτων επιτρέπουν σε πολλά πακέτα με δυνατότητα
   εγκατάστασης μεμονωμένα να έχουν ένα κοινό γονικό πακέτο.
   Διαφορετικά, συνίσταται η χρήση ενός *regular package*.

   Για περισσότερες πληροφορίες, δείτε το **PEP 420** και το Namespace
   πακέτα.

   Βλ. επίσης *module*.

native code
   Code that is compiled to machine instructions and runs directly on
   the processor, as opposed to code that is interpreted or runs in a
   virtual machine.  In the context of Python, native code typically
   refers to C, C++, Rust or Fortran code in *extension modules* that
   can be called from Python.  See also *extension module*.

nested scope
   Η δυνατότητα αναφοράς σε μια μεταβλητή σε έναν περικλειόμενο
   ορισμό. Για παράδειγμα μια συνάρτηση που ορίζεται μέσα σε μια άλλη
   συνάρτηση μπορεί να αναφέρεται σε μεταβλητές στην εξωτερική
   συνάρτηση. Σημειώστε ότι τα ένθετα πεδία από προεπιλογή λειτουργούν
   μόνο για αναφορά και όχι για εκχώρηση. Οι τοπικές μεταβλητές
   διαβάζονται και γράφονται στο εσωτερικό πεδίο εφαρμογής. Ομοίως, οι
   καθολικές μεταβλητές διαβάζουν και γράφουν στον καθολικό χώρο
   ονομάτων. Το "nonlocal" επιτρέπει την εγγραφή σε εξωτερικά πεδία.

κλάση νέου στυλ
   Το παλιό όνομα για το είδος των κλάσεων χρησιμοποιείται πλέον για
   όλα τα αντικείμενα.  Σε παλιότερες εκδόσεις της Python, μόνο οι
   κλάσεις νέου στυλ μπορούσαν να χρησιμοποιήσουν τις νεότερες,
   ευέλικτες δυνατότητες της Python όπως "__slots__", descriptors,
   ιδιότητες "__getattribute__()", μέθοδοι κλάσης, και στατικές
   μέθοδοι.

non-deterministic
   Behavior where the outcome of a program can vary between executions
   with the same inputs.  In multi-threaded programs, non-
   deterministic behavior often results from *race conditions* where
   the relative timing or interleaving of threads affects the result.
   Proper synchronization using *locks* and other *synchronization
   primitives* helps ensure deterministic behavior.

αντικείμενο
   Οποιαδήποτε δεδομένα με κατάσταση (χαρακτηριστικά ή τιμή) και
   καθορισμένη συμπεριφορά (μέθοδοι). Επίσης, η τελική βασική κλάση
   οποιασδήποτε *new-style class*.

βελτιστοποιημένο πεδίο ορατότητας (scope)
   Ένα πεδίο ορατότητας (scope) όπου τα ονόματα των τοπικών μεταβλητών
   είναι γνωστό με βεβαιότητα στον μεταγλωττιστή κατά τη μεταγλώττιση
   του κώδικα, επιτρέποντας τη βελτιστοποίηση της πρόσβασης για
   ανάγνωση και εγγραφή σε αυτά τα ονόματα. Οι τοπικοί χώροι ονομάτων
   για συναρτήσεις, γεννήτριες, συναρτήσεις coroutine, συμπτύξεις
   (comprehensions) και εκφράσεις γεννητριών βελτιστοποιούνται με
   αυτόν τον τρόπο. Σημείωση: οι περισσότερες βελτιστοποιήσεις του
   διερμηνέα εφαρμόζονται σε όλα τα πεδία ορατότητας· μόνο εκείνες που
   βασίζονται σε γνωστό σύνολο τοπικών και μη τοπικών μεταβλητών
   περιορίζονται σε βελτιστοποιημένα πεδία ορατότητας.

προαιρετικό module
   Ένα *extension module* που αποτελεί μέρος της *standard library*,
   αλλά μπορεί να απουσιάζει σε ορισμένες εκδόσεις του *CPython*,
   συνήθως λόγω απουσίας βιβλιοθηκών τρίτων ή επειδή το module δεν
   είναι διαθέσιμο για μια δεδομένη πλατφόρμα.

   Δείτε το Requirements for optional modules για μια λίστα με
   προαιρετικά modules που απαιτούν βιβλιοθήκες τρίτων.

πακέτο
   Ένα Python *module* που μπορεί να περιέχει submodules ή αναδρομικά,
   υποπακέτα. Τεχνικά, ένα πακέτο είναι μια λειτουργική μονάδα Python
   με ένα "__path__" χαρακτηριστικό.

   Βλ. επίσης *regular package* και *namespace package*.

parallelism
   Executing multiple operations at the same time (e.g. on multiple
   CPU cores).  In Python builds with the *global interpreter lock
   (GIL)*, only one thread runs Python bytecode at a time, so taking
   advantage of multiple CPU cores typically involves multiple
   processes (e.g. "multiprocessing") or native extensions that
   release the GIL. In *free-threaded* Python, multiple Python threads
   can run Python code simultaneously on different cores.

παράμετρος
   Μια έγκυρη οντότητα σε έναν ορισμό *function* (ή μέθοδος) που
   καθορίζει ένα *argument* (ή σε ορισμένες περιπτώσεις, ορίσματα) που
   μπορεί να δεχθεί η συνάρτηση. Υπάρχουν πέντε είδη παραμέτρων:

   * *λέξη-κλειδί ή θέση*: καθορίζει ένα όρισμα που μπορεί να
     μεταβιβαστεί είτε *θέσεως* ή ως *όρισμα λέξης-κλειδιού*.  Αυτό
     είναι το προεπιλεγμένο είδος παραμέτρου, για παράδειγμα *foo* και
     *bar* στα ακόλουθα:

        def func(foo, bar=None): ...

   * *θέσεως μόνο*: καθορίζει ένα όρισμα που μπορεί να παρέχεται μόνο
     από τη θέση. Οι παράμετροι μόνο θέσης μπορούν να οριστούν
     συμπεριλαμβάνοντας έναν χαρακτήρα "/" στη λίστα παραμέτρων του
     ορισμού συνάρτησης μετά από αυτές, για παράδειγμα *posonly1* και
     *posonly2* στα εξής:

        def func(posonly1, posonly2, /, positional_or_keyword): ...

   * *λέξης-κλειδί μόνο*: καθορίζει ένα όρισμα που μπορεί να παρέχεται
     μόνο με λέξη κλειδί. Οι παράμετροι μόνο για λέξη-κλειδί μπορούν
     να οριστούν συμπεριλαμβάνοντας μια παράμετρο θέσης ή σκέτο "*"
     στη λίστα παραμέτρων του ορισμού συνάρτησης πριν από αυτές, για
     παράδειγμα *kw_only1* και *kw_only2* στα ακόλουθα:

        def func(arg, *, kw_only1, kw_only2): ...

   * *μεταβλητή θέσης*: καθορίζει ότι μπορεί να παρασχεθεί μια
     αυθαίρετη ακολουθία ορισμάτων θέσης (επιπλέον των ορισμάτων θέσης
     που είναι ήδη αποδεκτά από άλλες παραμέτρους). Μια τέτοια
     παράμετρος μπορεί να οριστεί προσαρτώντας το όνομα της παραμέτρου
     με "*", για παράδειγμα *args* στα ακόλουθα:

        def func(*args, **kwargs): ...

   * *μεταβλητή λέξη-κλειδί*: καθορίζει ότι μπορούν να παρέχονται
     αυθαίρετα πολλά ορίσματα λέξης-κλειδιού (επιπλέον των ορισμάτων
     λέξης κλειδιού που είναι αποδεκτά από άλλες παραμέτρους).  Μια
     τέτοια παράμετρος μπορεί να οριστεί προσαρτώντας το όνομα της
     παραμέτρου με "**", για παράδειγμα *kwargs* όπως παραπάνω.

   Οι παράμετροι μπορούν να καθορίσουν τόσο τα προαιρετικά όσο και τα
   απαιτούμενα ορίσματα , καθώς και προεπιλεγμένες τιμές για ορισμένα
   προαιρετικά ορίσματα.

   Βλ. επίσης την *argument* καταχώριση ευρετηρίου, την ερώτηση FAQ
   σχετικά με η διαφορά μεταξύ ορισμάτων και παραμέτρων, την κλάση
   "inspect.Parameter", την ενότητα Function definitions και **PEP
   362**.

per-object lock
   A *lock* associated with an individual object instance rather than
   a global lock shared across all objects. In *free-threaded* Python,
   built-in types like "dict" and "list" use per-object locks to allow
   concurrent operations on different objects while serializing
   operations on the same object. Operations that hold the per-object
   lock prevent other locking operations on the same object from
   proceeding, but do not block *lock-free* operations.

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 χρησιμοποιούν
   μερικές φορές έναν αριθμητικό μετρητή:

      for i in range(len(food)):
          print(food[i])

   Αντίθετα, μια πιο καθαρή μέθοδος Pythonic:

      for piece in food:
          print(piece)

αναγνωρισμένο όνομα
   Ένα όνομα με κουκκίδες που δείχνει τη "διαδρομή" από το καθολικό
   εύρος ενός module σε μια κλάση, συνάρτηση ή μέθοδο που ορίζεται σε
   αυτήν την ενότητα, όπως ορίζεται στο **PEP 3155**. Για συναρτήσεις
   και κλάσεις ανώτατου επιπέδου, το αναγνωρισμένο όνομα είναι ίδιο με
   το όνομα του αντικειμένου:

      >>> class C:
      ...     class D:
      ...         def meth(self):
      ...             pass
      ...
      >>> C.__qualname__
      'C'
      >>> C.D.__qualname__
      'C.D'
      >>> C.D.meth.__qualname__
      'C.D.meth'

   Όταν χρησιμοποιείται για αναφορά σε modules , το *πλήρως
   αναγνωρισμένο όνομα* σημαίνει ολόκληρο το διακεκομμένο path προς το
   module, συμπεριλαμβανομένων τυχόν γονικών πακέτων π.χ.
   "email.mime.text":

      >>> import email.mime.text
      >>> email.mime.text.__name__
      'email.mime.text'

race condition
   A condition of a program where the behavior depends on the relative
   timing or ordering of events, particularly in multi-threaded
   programs.  Race conditions can lead to *non-deterministic* behavior
   and bugs that are difficult to reproduce.  A *data race* is a
   specific type of race condition involving unsynchronized access to
   shared memory.  The *LBYL* coding style is particularly susceptible
   to race conditions in multi-threaded code.  Using *locks* and other
   *synchronization primitives* helps prevent race conditions.

πλήθος αναφοράς
   Ο αριθμός των αναφορών σε ένα αντικείμενο.  Όταν το πλήθος αναφορών
   ενός αντικειμένου πέσει στο μηδέν, κατανέμεται. Μερικά αντικείμενα
   είναι *immortal* και έχουν πλήθος αναφορών που δεν τροποποιούνται
   ποτέ και επομένως τα αντικείμενα δεν κατανέμονται ποτέ. Η
   καταμέτρηση αναφορών γενικά δεν είναι ορατή στον κώδικα της Python,
   αλλά είναι βασικό στοιχείο της υλοποίησης *CPython*. Οι
   προγραμματιστές μπορούν να καλέσουν τη συνάρτηση
   "sys.getrefcount()" για να επιστρέψουν το πλήθος αναφοράς για ένα
   συγκεκριμένο αντικείμενο.

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

κανονικό πακέτο
   Ένα παραδοσιακό *package*, όπως ένας κατάλογος που περιέχει ένα
   "__init__.py" αρχείο.

   Βλ. επίσης *namespace package*.

reentrant
   A property of a function or *lock* that allows it to be called or
   acquired multiple times by the same thread without causing errors
   or a *deadlock*.

   For functions, reentrancy means the function can be safely called
   again before a previous invocation has completed, which is
   important when functions may be called recursively or from signal
   handlers. Thread-unsafe functions may be *non-deterministic* if
   they're called reentrantly in a multithreaded program.

   For locks, Python's "threading.RLock" (reentrant lock) is
   reentrant, meaning a thread that already holds the lock can acquire
   it again without blocking.  In contrast, "threading.Lock" is not
   reentrant - attempting to acquire it twice from the same thread
   will cause a deadlock.

   See also *lock* and *deadlock*.

REPL
   Ακρωνύμιο του "read–eval–print loop", άλλη ονομασία για το
   *interactive* περιβάλλον του διερμηνέα.

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

ακολουθία
   Ένας *iterable* που υποστηρίζει την αποτελεσματική πρόσβαση στο
   στοιχείο χρησιμοποιώντας ακέραιους δείκτες μέσω της ειδική μεθόδου
   "__getitem__()" και ορίζει μια μέθοδο "__len__()" που επιστρέφει το
   μήκος της ακολουθίας. Ορισμένοι ενσωματωμένοι τύποι ακολουθιών
   είναι "list", "str", "tuple", και "bytes". Σημειώστε ότι το "dict"
   υποστηρίζει επίσης "__getitem__()" και "__len__()", αλλά θεωρείται
   αντιστοίχιση και όχι ακολουθία επειδή οι αναζητήσεις χρησιμοποιούν
   αυθαίρετα *hashable* κλειδιά παρά ακέραιοι.

   Η αφηρημένη βασική κλάση "collections.abc.Sequence" ορίζει μια πολύ
   πιο πλούσια διεπαφή που ξεπερνά τα απλά "__getitem__()" και
   "__len__()", adding "count()", "index()", "__contains__()", και
   "__reversed__()". Οι τύποι που υλοποιούν αυτήν την διευρυμένη
   διεπαφή μπορούν να καταχωρηθούν ρητά χρησιμοποιώντας "register()".
   Για περισσότερη τεκμηρίωση σχετικά με τις μεθόδους ακολουθίας
   γενικά, ανατρέξτε στο Common Sequence Operations.

set comprehension
   Ένας συμπαγής τρόπος για να επεξεργαστείτε όλα ή μέρος των
   στοιχείων σε ένα iterable και να επιστραφεί ένα σύνολο με τα
   αποτελέσματα. "results = {c for c in 'abracadabra' if c not in
   'abc'}" δημιουργεί το σύνολο συμβολοσειρών "{'r', 'd'}". Βλ.
   Displays for lists, sets and dictionaries.

μοναδικό dispatch
   Μια μορφή dispatch *generic function* όπου η υλοποίηση επιλέγεται
   με βάση τον τύπο ενός μεμονωμένου ορίσματος.

slice
   An object of type "slice", used to describe a portion of a
   *sequence*. A slice object is created when using the slicing form
   of subscript notation, with colons inside square brackets, such as
   in "variable_name[1:3:5]".

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

   Η κατάργηση με ήπιο τρόπο, σε αντίθεση με την κανονική κατάργηση,
   δεν σχεδιάζει την κατάργηση του API και δεν θα εκπέμπει
   ειδοποιήσεις

   Δείτε PEP 387: Soft Deprecation.

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

τυπική βιβλιοθήκη
   Η συλλογή από *packages*, *modules* και *extension modules* που
   διανέμεται ως μέρος του επίσημου πακέτου διερμηνέα Python. Η
   ακριβής συμμετοχή της συλλογής μπορεί να διαφέρει ανάλογα με την
   πλατφόρμα, τις διαθέσιμες βιβλιοθήκες συστήματος ή άλλα κριτήρια. Η
   τεκμηρίωση μπορεί να βρεθεί στο The Python Standard Library.

   Βλ. επίσης "sys.stdlib_module_names" για μια λίστα με όλα τα πιθανά
   ονόματα module της τυπικής βιβλιοθήκης.

δήλωση
   Μια πρόταση είναι μέρος μιας σουίτας (ένα "μπλοκ" κώδικα). Μια
   πρόταση είναι είτε ένας *expression* είτε μια από πολλές δομές με
   μια λέξη-κλειδί όπως "if", "while" ή "for".

ελεγκτής στατικού τύπου
   Ένα εξωτερικό εργαλείο όπου διαβάζει τον Python κώδικα και τον
   αναλύει, αναζητώντας προβλήματα όπως λανθασμένοι τύποι. Βλ. επίσης
   *type hints* και το module "typing".

stdlib
   Μια συντομογραφία του *standard library*.

strong reference
   Στο C API της Python, μια ισχυρή αναφορά είναι μια αναφορά σε ένα
   αντικείμενο που ανήκει στον κώδικα που περιέχει την αναφορά. Η
   ισχυρή αναφορά λαμβάνεται καλώντας το "Py_INCREF()" όταν η αναφορά
   δημιουργείται και απελευθερώνεται με "Py_DECREF()" όταν διαγραφεί η
   αναφορά.

   Η συνάρτηση "Py_NewRef()" μπορεί να χρησιμοποιηθεί για τη
   δημιουργία ισχυρής αναφοράς σε ένα αντικείμενο. Συνήθως, η
   συνάρτηση "Py_DECREF()" πρέπει να καλείται στην ισχυρή αναφορά πριν
   βγει από το εύρος της ισχυρής αναφοράς, για να αποφευχθεί η διαρροή
   μιας αναφοράς.

   Βλ. επίσης *borrowed reference*.

subscript
   The expression in square brackets of a subscription expression, for
   example, the "3" in "items[3]". Usually used to select an element
   of a container. Also called a *key* when subscripting a *mapping*,
   or an *index* when subscripting a *sequence*.

synchronization primitive
   A basic building block for coordinating (synchronizing) the
   execution of multiple threads to ensure *thread-safe* access to
   shared resources. Python's "threading" module provides several
   synchronization primitives including "Lock", "RLock", "Semaphore",
   "Condition", "Event", and "Barrier".  Additionally, the "queue"
   module provides multi-producer, multi-consumer queues that are
   especially useful in multithreaded programs. These primitives help
   prevent *race conditions* and coordinate thread execution.  See
   also *lock*.

t-string
t-strings
   Οι κυριολεκτικές συμβολοσειρές που χρησιμοποιούνται με πρόθεμα "t"
   or "T" ονομάζονται συνήθως "t-strings" που είναι συντομογραφία του
   template string literals.

κωδικοποίηση κειμένου
   Μια συμβολοσειρά στην 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 για
   περισσότερες πληροφορίες.

thread-safe
   A module, function, or class that behaves correctly when used by
   multiple threads concurrently.  Thread-safe code uses appropriate
   *synchronization primitives* like *locks* to protect shared mutable
   state, or is designed to avoid shared mutable state entirely.  In
   the *free-threaded* build, built-in types like "dict", "list", and
   "set" use internal locking to make many operations thread-safe,
   although thread safety is not necessarily guaranteed.  Code that is
   not thread-safe may experience *race conditions* and *data races*
   when used in multi-threaded programs.

λεκτικό σύμβολο (token)
   Μια μικρή μονάδα πηγαίου κώδικα, που παράγεται από τον lexical
   analyzer (γνωστό και ως *αναλυτή (tokenizer)*). Ονόματα, αριθμοί,
   συμβολοσειρές, τελεστές αλλαγές γραμμής και παρόμοια στοιχεία
   αναπαρίστανται ως λεκτικά σύμβολα (tokens).

   Το module "tokenize" εκθέτει τον λεξικό αναλυτή της Python. Το
   module "token" περιέχει πληροφορίες για τους διάφορους τύπους
   λεκτικών συμβόλων (tokens).

συμβολοσειρά τριπλών εισαγωγικών
   Μια συμβολοσειρά που δεσμεύεται από τρεις περιπτώσεις είτε ενός
   εισαγωγικού (") ή μιας αποστρόφου ('). Αν και δεν παρέχουν καμία
   λειτουργικότητα που δεν είναι διαθέσιμη με συμβολοσειρές με μονά
   εισαγωγικά, είναι χρήσιμες για διαφόρους λόγους. Σας επιτρέπουν να
   συμπεριλάβετε μονά και διπλά εισαγωγικά χωρίς διαφυγή σε μια
   συμβολοσειρά και μπορούν να εκτείνονται σε πολλές γραμμές χωρίς τη
   χρήση του χαρακτήρα συνέχεια, καθιστώντας τα ιδιαίτερα χρήσιμα κατά
   τη σύνταξη εγγράφων με συμβολοσειρές.

τύπος
   Ο τύπος ενός Python αντικειμένου καθορίζει τι είδους αντικείμενο
   είναι∙ κάθε αντικείμενο έχει έναν τύπο. Ο τύπος ενός αντικειμένου
   είναι προσβάσιμος ως το χαρακτηριστικό "__class__" ή μπορεί να
   ανακτηθεί με "type(obj)".

type alias
   Ένα συνώνυμο για έναν τύπο, που δημιουργείται με την ανάθεση τύπου
   σε ένα αναγνωριστικό.

   Τα type aliases είναι χρήσιμα για την απλοποίηση *type alias*. Για
   παράδειγμα:

      def remove_gray_shades(
              colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:
          pass

   μπορεί να γίνει πιο ευανάγνωστο όπως:

      Color = tuple[int, int, int]

      def remove_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 μια μεταβλητή ή ένα χαρακτηριστικό κλάσης, η
   ανάθεση είναι προαιρετική:

      class C:
          field: 'annotation'

   Τα annotations μεταβλητών χρησιμοποιούνται συνήθως για *type
   hints*: για παράδειγμα αυτή η μεταβλητή αναμένεται να λάβει τιμές
   "int":

      count: int = 0

   Η σύνταξη annotation μεταβλητής περιγράφεται στην ενότητα Εντολές
   ανάθεσης με σχολιασμό.

   Βλ. *function annotation*, **PEP 484** και **PEP 526**, που
   περιγράφουν αυτή τη λειτουργία. Δείτε επίσης Annotations Best
   Practices για βέλτιστες πρακτικές σχετικά με την εργασία με
   σχολιασμούς.

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

   Βλ. επίσης "venv".

virtual machine
   Ένας υπολογιστής ορίζεται εξ ολοκλήρου από το λογισμικό. Η εικονική
   μηχανή της Python εκτελεί το *bytecode* που εκπέμπεται από τον
   μεταγλωττιστή bytecode.

τελεστής walrus
   Μια ελαφρώς χιουμοριστική αναφορά στον τελεστή εκχώρησης ":="
   επειδή μοιάζει λίγο με έναν θαλάσσιο ίππο αν γυρίσετε το κεφάλι
   σας.

Zen της Python
   Κατάλογος σχεδιαστικών αρχών και φιλοσοφιών που είναι χρήσιμες για
   την κατανόηση και τη χρήση της γλώσσας. Ο κατάλογος μπορεί να
   βρεθεί πληκτρολογώντας ""import this"" στην διαδραστική κονσόλα.
