Δημιουργήθηκε από τονΟλλανδόΓκίντο βαν Ρόσσουμ (Guido van Rossum) στο ερευνητικό κέντρο Centrum Wiskunde & Informatica (CWI) το 1989[4]και κυκλοφόρησε για πρώτη φορά το 1991.[5][4]
Ο κύριος στόχος της είναι η αναγνωσιμότητα του κώδικά της καιη ευκολία χρήσης της. Το συντακτικό της επιτρέπει στους προγραμματιστέςνα εκφράσουν έννοιες σε λιγότερες γραμμές κώδικα από ό,τιθα ήταν δυνατόν σε γλώσσες όπως ηC++ ή ηJava.[6][7][3] Διακρίνεται λόγω του ότι έχει πολλές βιβλιοθήκες που διευκολύνουν ιδιαίτερα αρκετές συνηθισμένες εργασίες καιγιατην ταχύτητα εκμάθησης της. Μειονεκτεί στο ότι επειδή είναι διερμηνευόμενη είναι πιο αργή από τις μεταγλωττιζόμενες (compiled) γλώσσες όπως ηCκαιη C++. Για αυτόν τον λόγο δεν είναι κατάλληλη για γραφή λειτουργικών συστημάτων.[8]
Οι διερμηνευτές της Python είναι διαθέσιμοι για εγκατάσταση σε πολλά λειτουργικά συστήματα, επιτρέποντας στην Python την εκτέλεση κώδικα σε ευρεία γκάμα συστημάτων. Χρησιμοποιώντας εργαλεία τρίτων, όπως τοPy2exe ή το Pyinstaller,[9]ο κώδικας της Python μπορεί να πακεταριστεί σε αυτόνομα εκτελέσιμα προγράμματα για μερικά από ταπιο δημοφιλή λειτουργικά συστήματα, επιτρέποντας τη διανομή του βασισμένου σε Python λογισμικού για χρήση σε αυτά τα περιβάλλοντα χωρίς να απαιτείται εγκατάσταση του διερμηνευτή της Python.
Η Python αναπτύσσεται ως ανοιχτό λογισμικό (open source) καιη διαχείρισή της γίνεται από τονμη κερδοσκοπικό οργανισμό Python Software Foundation.[8]Ο κώδικας διανέμεται μετην άδεια Python Software Foundation License η οποία είναι συμβατή μετηνGPL. Το όνομα της γλώσσας προέρχεται από την ομάδα των Άγγλων κωμικών Μόντυ Πάιθονκαιδεν έχει καμιά σχέση μετο φίδι πύθωνα, παρότι το λογότυπό της παραπέμπει σε κάτι τέτοιο.[10][11][4]
Η Python δημιουργήθηκε από τον Γκίντο βαν Ρόσσουμ στο ερευνητικό κέντρο Centrum Wiskunde & Informatica (CWI) το 1989.[4] Αρχικά, η Python ήταν γλώσσα σεναρίωνπου χρησιμοποιήθηκε στο κατανεμημένο λειτουργικό σύστημαAmoeba,[4] ικανή καιγιακλήσεις συστήματος. Θεωρείται διάδοχος της γλώσσας προγραμματισμού ABC, μιακαι αυτή υπήρξε η βασική πηγή έμπνευσης γιατον Γκίντο βαν Ρόσσουμ.[4]
Η Python 2.0 κυκλοφόρησε στις 16 Οκτωβρίου του 2000. Στις 3 Δεκεμβρίου 2008 κυκλοφόρησε η έκδοση 3.0 (γνωστή και ως py3k ή python 3000). Πολλά από τα καινούργια χαρακτηριστικά αυτής της έκδοσης έχουν μεταφερθεί στις εκδόσεις 2.6 και 2.7 που είναι προς τα πίσω συμβατές.
Η Python 3.0 είναι ιστορικά η πρώτη γλώσσα προγραμματισμού που σπάει την προς τα πίσω συμβατότητα με προηγούμενες εκδόσεις ώστε να διορθωθούν κάποια λάθη που υπήρχαν σε προγενέστερες εκδόσεις καινα καταστεί ακόμα πιο σαφής ο απλός τρόπος μετον οποίο μπορούν να γίνουν κάποια πράγματα.
Η Python 3.0 συνοδεύεται μετο πρόγραμμα 2to3.py, που επιτρέπει την μετατροπή κώδικα της έκδοσης 2.0 σε 3.0.[12][13]
ΟΓκίντο βαν Ρόσσουμ, πρωτοστατούσε στην κοινότητα της Python μέχρι τον Ιούλιο του 2018, οπότε και παραιτήθηκε,[14][15]γιανα συνεχίσει μόνο ως μέλος του Διοικητικού Συμβουλίου.
Ηπιο πρόσφατη έκδοση είναι η 3.13 και δημοσιεύτηκε στις 8 Μαΐου 2024
Γιανα εκτελεστούν διαδραστικά (interactively) μεμονωμένες εντολές ή προγράμματα είναι απαραίτητη η εγκατάσταση του διερμηνευτή της Python, ο οποίος είναι ελεύθερα διαθέσιμος για «κατέβασμα» (download) από τον επίσημο ιστότοπό της (www.python.org). ΓιαMicrosoft Windows υπάρχουν εκδόσεις των 32 ή 64 bits. Στα λειτουργικά συστήματα Linux και Mac OS X συνηθίζεται να είναι προεγκατεστημένη, πιθανότατα όμως να είναι μια παλαιότερη έκδοσή της.[16]
Γιατη συγγραφή προγραμμάτων είναι απαραίτητος ένας κειμενογράφος ή ακόμα καλύτερα ένα ολοκληρωμένο περιβάλλον ανάπτυξης (Integrated Development Environment - IDE), το οποίο είναι ένα ειδικό λογισμικό γιατην ανάπτυξη εφαρμογών. Η Python έρχεται μαζί με ένα εύχρηστο και απλό περιβάλλον ανάπτυξης μετην ονομασία ΙDLE. Τα αρχικά του προέρχονται από τις λέξεις Interactive DeveLopment Environment και είναι γραμμένο σε Python από τονΓκίντο βαν Ρόσσουμ. Χρησιμοποιεί τη βιβλιοθήκη γραφικών Tkinter, οπότε μπορεί να εκτελεσθεί σε περιβάλλον Linux, Windows και Mac OS X. Το IDLE μας δίνει τη δυνατότητα να χρησιμοποιήσουμε διαδραστικά τον διερμηνευτή της γλώσσας, να γράψουμε καινα επεξεργαστούμε προγράμματα, νατα αποθηκεύσουμε σε αρχεία, νατα εκτελέσουμε, να κάνουμε αποσφαλμάτωση (debugging).[17]
Η γλώσσα χρησιμοποιεί μεταγλωττιστή (compiler) γιατην δημιουργία του εκτελέσιμου κώδικα και σχετίζεται με τις γλώσσες προγραμματισμού Tcl, Perl, Scheme, JavaκαιRuby, καθώς καιμετηνABCη οποία υπήρξε η αρχική πηγή έμπνευσης γιατη δημιουργία της.
Τα ονόματα που λαμβάνουν οι μεταβλητές υπόκεινται στους εξής κανόνες:[18][19][20]
Είναι λέξεις που αποτελούνται από αλφαριθμητικούς χαρακτήρες (γράμματα και αριθμούς) καιτην κάτω παύλα (underscore, "_"). Μπορεί να αρχίζει με αλφαβητικό χαρακτήρα ή κάτω παύλα (_).
Δεν επιτρέπεται να αρχίζει με αριθμό (π.χ. var4_1 είναι σωστό, αλλά το4var_1 είναι λάθος).
Υπάρχει διάκριση πεζών και κεφαλαίων γραμμάτων (case sensitivity), οπότε καιοι μεταβλητές διαφοροποιούνται λόγω πεζών ή κεφαλαίων (π.χ. άλλη η μεταβλητή Varκαι άλλη ηvar).
Δεν επιτρέπονται δεσμευμένες λέξεις (λέξεις-κλειδιά, keywords), δηλαδή λέξεις με ιδιαίτερη σημασία (idetifiers), όπως print, type, False, float, None,κλπ.[19]Η Python έχει 33 λέξεις-κλειδιά.[21]
Μπορούν να χρησιμοποιηθούν και ελληνικά ή άλλης γλώσσας γράμματα, αλλά δεν συνίσταται γιατί δημιουργείται δυσανάγνωστος κώδικας.[22]
Οιτύποι δεδομένων της Python διακρίνονται στους αρχέγονους (primitive data type), στις πιο σύνθετες δομές δεδομένων (λίστες, πλειάδες, σύνολα, λεξικά) και, λόγω των αντικειμενοστρεφών δυνατοτήτων της, στις κλάσεις (classes). Λόγω του ότι η Python είναι δυναμική γλώσσαδεν δηλώνονται οι τύποι των μεταβλητών πριν χρησιμοποιηθούν. Ο τύπος που τους αποδίδεται εξαρτάται από την τιμή πουθα πάρουν κατά την διάρκεια της εκτέλεσης του προγράμματος. Όταν χρησιμοποιηθεί (π.χ. σε έκφραση ή συνάρτηση) πρέπει να έχει πάρει τιμή γιατί ο διερμηνευτής (interpreter) δίνει λάθος πουτο ονομάζει NameError. Για αυτόν τον λόγο η Python υποστηρίζει τον ιδιαίτερο τύπο NoneType (βλ. παρακάτω).[19]
int (ακέραιος). Στην Python οι ακέραιοι μπορούν να είναι οσοδήποτε μεγάλοι.[23]
float (κινητής υποδιαστολής)
str(συμβολοσειρά ή string). Είναι ακολουθία χαρακτήρων που περικλείονται από μονά ή διπλά εισαγωγικά.[18]Σε ειδικές περιπτώσεις μπορεί να γίνει χρήση τριπλών εισαγωγικών (μονών :''' ή διπλών: """).[20]
NoneType . Αυτός ο τύπος μεταβλητής παίρνει την τιμή Noneμε ανάθεση (assignment, = None) και αντιμετωπίζεται, στον σχεδιασμό του προγράμματος, σαν μεταβλητή πουδεν έχει τιμή.[19]None επιστρέφουν καιοι συναρτήσεις πουδεν επιστρέφουν τιμή (δεν έχουν return <έκφραση>), όπως για παράδειγμα ηprint().[26]
Δεν έχει μεταβλητή τύπου Character (όπως για παράδειγμα η C/C++). Σε αυτή την περίπτωση χρησιμοποιείται η μεταβλητή String με ένα χαρακτήρα.
Η συνάρτηση type() μας επιστρέφει τον τύπο της μεταβλητής.[27]Ανη μεταβλητή δεν έχει πάρει τιμή μας επιστρέφει NoneType.
Ηλίστα υλοποιεί τον γνωστό αφηρημένο τύπο δεδομένων. Μοιάζει μετην δομή τουπίνακα (array), αλλά σε αντίθεση με αυτόν μπορεί να περιέχει ανομοιογενή αντικείμενα (items) ή αλλιώς στοιχεία (elements), τα οποία μπορεί να είναι οποιαδήποτε δομή δεδομένων (ακόμα και λίστα). Όπως στους πίνακες τα στοιχεία είναι διατεταγμένα σε συγκεκριμένη σειρά, προσπελάσιμα με δείκτες και επιτρέπεται η επανάληψη τους. Ορίζεται με ένα ζευγάρι τετραγωνισμένων αγκύλων[]καιμετα στοιχεία να χωρίζονται μεταξύ τους με κόμμα, π.χ. η ακολουθία [ <στοιχείο1>, ..., <στοιχείοΝ> ] ορίζει μια λίστα Ν στοιχείων. Μπορεί να οριστεί μια κενή λίστα μόνο με τις αγκύλες και χωρίς περιεχόμενο.[28]
Επειδή η συμβολοσειρά (string) αποτελεί μια διατεταγμένη ακολουθία χαρακτήρων μοιάζει με λίστα και χρησιμοποιεί παρόμοιους τελεστές (operators) και συναρτήσεις (methods). Η μεγάλη διαφορά τους είναι ότι η λίστα είναι δυναμικός ή αλλιώς μεταβλητός (mutable) τύπος δεδομένων, ενώ η συμβολοσειρά στατικός ή αλλιώς αμετάβλητος (immutable) τύπος δεδομένων. Στη λίστα μπορούμε να αλλάξουμε τα στοιχεία που περιέχει. Στη συμβολοσειρά η αλλαγή των χαρακτήρων που περιέχει γίνεται μόνο με αντικατάσταση (overwriting) μέσω ανάθεσης (assignment) από νέα συμβολοσειρά.[29][30]
Ηπλειάδα υλοποιεί την αντίστοιχη μαθηματική έννοια της πλειάδας. Είναι μια πεπερασμένη ακολουθία στοιχείων διατεταγμένων σε συγκεκριμένη σειρά και μοιάζει πολύ μετηνλίστα (list). Ορίζεται με ένα ζευγάρι παρενθέσεων()καιμετα στοιχεία να χωρίζονται μεταξύ τους με κόμμα, π.χ. η ακολουθία ( <στοιχείο1>, ..., <στοιχείοΝ> ) ορίζει μια πλειάδα Ν στοιχείων. Αντο επιτρέπουν τα συμφραζόμενα μπορούν να παραληφθούν οι παρενθέσεις. Διαφέρει από την δομή της λίστας στο ότι η πλειάδα είναι στατική ή αλλιώς αμετάβλητη (immutable) δομή δεδομένων. Αφού δημιουργηθεί δεν μπορεί να μεταβληθεί. Η χρήση της πλειάδας είναι προτιμότερη από της λίστας όταν δεν χρειάζεται να αλλάξουμε τα στοιχεία της γιατί θεωρητικά είναι αποτελεσματικότερη σε ταχύτητα στις διάφορες λειτουργίες της. Η πλειάδα που περιέχει ένα στοιχείο ορίζεται πάντα με ένα κόμμα μετά το στοιχείο, π.χ. ( <στοιχείο>, ), διότι οι παρενθέσεις χρησιμοποιούνται καιστην ομαδοποίηση των εκφράσεων (expressions) καιη γραφή χωρίς κόμμα, π.χ. = ( <στοιχείο> ) λαμβάνεται από τον διερμηνευτής (interpreter) ως ανάθεση (assignment), δηλαδή = <στοιχείο>.[29]
To λεξικό (dictionary) είναι μια δομή δεδομένων γιατην αποθήκευση ζευγαριών τιμών της μορφής κλειδί : τιμή (key : value). Ορίζεται με ένα ζευγάρι αγκύλων {}καιμετα ζευγάρια να χωρίζονται μεταξύ τους με κόμμα, π.χ. η ακολουθία { κλειδί1 : τιμή1, ..., κλειδίΝ : τιμήΝ } ορίζει ένα λεξικό Ν ζευγαριών. Ανάμεσα στοκλειδίκαιτηντιμή υπάρχει η άνω-κάτω τελεία (:). Τακλειδιά πρέπει να είναι μοναδικά γιατί χρησιμεύουν στην προσπέλαση της αντίστοιχης τιμής. Τα κλειδιά πρέπει να είναι στατικοί ή αλλιώς αμετάβλητοι (immutable) τύποι δεδομένων, όπως ακέραιοι αριθμοί, συμβολοσειρές, αμετάβλητες πλειάδες (όταν όλα τα στοιχεία της πλειάδας είναι αμετάβλητα).[31]
Επειδή η Python είναι δυναμική γλώσσα προγραμματισμού (dynamically typed) διαφέρει από τις άλλες παραδοσιακές γλώσσες προστακτικού προγραμματισμού (Imperative programming) στον τρόπο που γίνεται η ανάθεση τιμών στις μεταβλητές της. Συνήθως οι μεταβλητές δηλώνονται πριν τους ανατεθούν τιμές και μαζί δηλώνεται καιο τύπος τους (interer, floating point, character, κλπ.). Στην Python οι μεταβλητές δηλώνονται μαζί μετην ανάθεση των τιμών σε αυτές (ακόμα και όταν τους δοθεί η τιμή None) καιδεν είναι δεσμευμένες σε κάποιο συγκεκριμένο τύπο δεδομένων. Μία μεταβλητή μπορεί να είναι ακεραία (integer) καιη ίδια στη συνέχεια να γίνει συμβολοσειρά (string) αν της ανατεθεί τιμή συμβολοσειράς.
Στην Python, όταν κατά την εκτέλεση ενός προγράμματος, αναθέτουμε τιμή σεμια μεταβλητή x, π.χ. x = 2, η τιμή 2 αντιγράφεται σε χώρο μνήμης πού δεσμεύεται (memory allocation), μαζί με άλλες ιδιότητες, όπως π.χ. ότι ο τύπος της είναι ακέραιος (integer).[32]Στην μεταβλητή x αποδίδεται η διεύθυνση (memory address) αυτής της θέσης στην μνήμη. Η μεταβλητή λειτουργεί σανδείκτης (pointer). Η ίδια η μεταβλητή δεν έχει κάποια τιμή ή τύπο δεδομένων, αλλά έχει τη θέση της μνήμης που «αντιπροσωπεύει». Σε ένα πρόγραμμα μετά την ανάθεση x = 2 (η μεταβλητή είναι τύπου integer), στην συνέχεια της εκτέλεσης μπορεί να εκτελεστεί η ανάθεση x = "hellow world", οπότε η μεταβλητή «αντιπροσωπεύει» την συμβολοσειρά "hellow world" (είναι τύπου string). Στην δεύτερη ανάθεση η τιμή 2 δεν «αντιπροσωπεύεται» από κάποια μεταβλητή (δεν χρειάζεται πλέον στο πρόγραμμα) καιοσυλλέκτης απορριμμάτων (garbage collector), της Python, αναλαμβάνει «αυτόματα» να αποδεσμεύσει (memory de-allocation) τον χώρο της μνήμης που αυτή κατέχει.[33][32]
Η στοίχιση στα αριστερά ή αλλιώς οι αριστερές εσοχές (indentation) έχουν μεγάλη σημασία γιατί ορίζουν τα block (ομαδοποίηση) του κώδικα.[34] Αυτό σε άλλες γλώσσες, όπως C και Java επιτυγχάνεται μετην χρήση των αγκύλων { }.[35]Στην Python το block κώδικα αρχίζει εκεί πουη αριστερή εσοχή αυξάνεται προς τα δεξιά και τελειώνει εκεί που καταργείται η εσοχή. Εσοχή μέσα σε εσοχή σημαίνει block μέσα σε block (nested blocks).[24]Η εσοχή μπορεί να είναι οσοδήποτε μεγάλη ή μικρή - του ίδιου πάντα μεγέθους - αλλά συνίσταται η χρήση 4 κενών χαρακτήρων (spacebars) για ευκολότερη αναγνωσιμότητα του κώδικα.[36]
Για παράδειγμα μια εμφωλιασμένη εντολή if ορίζεται ως εξής:[35]
Το block της πρώτης if περιέχει τις εντολή1, εντολή2, την δεύτερη ifκαι τελειώνει μετην εντολή5. Η εντολή6 είναι εκτός block (δεν ανήκει στην εξωτερική if). Η εσωτερική if (εμφωλιασμένη) μετην δική της εσοχή ορίζει ένα block (που περιέχει την εντολή3 και εντολή4) μέσα στο block της εξωτερικής if.
Υποστηρίζει τους γνωστούς, με τις άλλες γλώσσες προγραμματισμού, τελεστές (operators), όπως τους +, -, *, /,**, %, που όμως έχουν κάποιες διαφοροποιήσεις ανάλογα με τους τελεστέους (operands), δηλαδή τον τύπο των μεταβλητών, όπου εφαρμόζονται (πολυμορφισμός).[37]
Ο τελεστής της πρόσθεσης + όταν οι τελεστέοι είναι Strings εκτελεί την πράξη της συνένωσης (concatenation) καιο πολλαπλασιασμός *την πράξη της αναπαραγωγής (replication) του String όταν αυτό πολλαπλασιάζεται με ακέραιο (integer). Δηλαδή η έκφραση (expression): "abc" + "def" έχει ως αποτέλεσμα "abcdef"καιη"abc" * 3 ή 3 * "abc" έχει ως αποτέλεσμα "abcabcabc" αντίστοιχα.[18]
Υποστηρίζει τους λογικούς τελεστές and, orκαιnotγιαμεταβλητές τύπου Boolean. Τα εμφωλιασμένα (nested) not αποδίδονται ως διπλή άρνηση (άρνηση στην άρνηση). Η σειρά (προτεραιότητα) εκτέλεσης είναι not, and, or.[24]
Στις οντότητες ή αντικείμενα (μεταβλητές, συναρτήσεις, κλάσεις, κλπ.), που δημιουργούνται σε ένα πρόγραμμα, γιανα μπορούν να χρησιμοποιηθούν (προσπελαστούν), αποδίδονται ονόματα (name binding). Για παράδειγμα στην Python μια οντότητα, όπως είναι μια μεταβλητή, δεν δηλώνεται, αλλά δημιουργείταικαιονοματίζεται όταν της γίνει ανάθεση (assignment) κάποιας τιμής. Οντότητες πουδημιουργούνται μέσα σε ένα block κώδικα, όπως το σώμα μιας συνάρτησης, μιας εντολής if ή for, κλπ., έχουν περιορισμένη εμβέλεια και μπορούν να χρησιμοποιηθούν μόνο μέσα στο block που έχουν ονομαστεί. Ένα τέτοιο όνομα δεν είναι προσπελάσιμο εκτός του block ακόμα καιαν έχει την ίδια ονομασία και λέγεται ότι είναι τοπικής εμβέλειας (local scope). Ένα όνομα που δηλώνεται στο κύριο σώμα (block) του προγράμματος μπορεί να προσπελαστεί σε ολόκληρο το πρόγραμμα, ακόμα καιστα block που έχουν οριστεί μέσα στο πρόγραμμα και λέγεται ότι είναι καθολικής εμβέλειας (global scope).[38]
Μέσα σε ένα block ο διερμηνευτής (interpreter) χρησιμοποιεί την τοπική ονομασία μιας οντότητας ακόμα καιαν υπάρχει άλλη μετην ίδια ονομασία και καθολική εμβέλεια. Συγκεκριμένα ο διερμηνευτής όταν συναντήσει ένα όνομα (π.χ. μεταβλητής) μέσα σε ένα block ελέγχει πρώτα αν έχει δημιουργηθεί αυτό το όνομα μέσα στο block (οπότε είναι τοπικής εμβέλειας) καιτο χρησιμοποιεί, έστω καιαν υπάρχει ίδια ονομασία εκτός του block (καθολικής εμβέλειας). Ανδεντοβρει μέσα στο block τότε και μόνο τότε ελέγχει αν υπάρχει τέτοια ονομασία πουνα έχει δημιουργηθεί στο κύριο μέρος του προγράμματος (είναι καθολικής εμβέλειας) και χρησιμοποιεί αυτήν. Δηλαδή μια καθολικής εμβέλειας μεταβλητή χρησιμοποιείται μέσα σε ένα block, μόνο ανδεν υπάρχει τοπικής εμβέλειας μεταβλητή μετο ίδιο όνομα, μέσα στο block.[38][39]
Όταν μέσα σε ένα block γίνει η ανάθεση num = 123, τότε δημιουργείται (αναγκαστικά) η τοπικής εμβέλειας μεταβλητή num ακόμα καιαν υπάρχει καθολικής εμβέλειας num. Στην περίπτωση πουδεν είναι επιθυμητό να δημιουργηθεί η τοπική num, αλλά η τιμή 123να ανατεθεί στην καθολική num γίνεται χρήση της δήλωσης global. Δηλώνοντας global num, πριν από τηνnum = 123, ο διερμηνευτής δεν δημιουργεί τοπική num, αλλά δίνει την τιμή 123, στην καθολική που ήδη υπάρχει.[38][39]
Ένα από ταπιο απλά προγράμματα στην γλώσσα Python είναι η εμφάνιση ενός γραπτού αποτελέσματος (π.χ. Hello, world!):
>>> print("Hello, world!")
Hello, world!
Ένα ιδιαίτερο χαρακτηριστικό της γλώσσας είναι η χρήση κενών διαστημάτων σαν εσοχές (whitespace) γιατον διαχωρισμό των συντακτικών δομών (block of code) του προγράμματος, σε αντίθεση μετην πρακτική σε άλλες γλώσσες όπου γιατον ίδιο σκοπό χρησιμοποιούνται ειδικά σύμβολα (π.χ. αγκύλες). Αυτό, σε συνδυασμό μετο ότι χρησιμοποιεί πλήρεις αγγλικές λέξεις στη θέση συμβόλων, καθιστούν τον κώδικα της Python ευανάγνωστο από όσους έχουν βασική γνώση τωναγγλικών.
Η Python ενδείκνυται ως γλώσσα εισαγωγική στον προγραμματισμό καιστην επιστήμη των υπολογιστών γενικότερα, με δεδομένη την απλότητα στη σύνταξή της. Διεθνώς πολλά πανεπιστήμια αλλά καιη δευτεροβάθμια εκπαίδευση σε πολλές χώρες, υιοθετούν μια python first προσέγγιση εισαγωγής στον προγραμματισμό. Στη δευτεροβάθμια εκπαίδευση της χώρας μας το πρώτο βήμα έγινε μετα Επαγγελματικά Λύκεια στα οποία έχει εισαχθεί στο σχετικό μάθημα (πηγή: Αράπογλου, κ.α.2017).[40]
Επίσης, η Python χρησιμοποιείται ως εργαλείο για εισαγωγή σε βασικές έννοιες των υπολογιστών, (βλέπε για παράδειγμα: Avouris et al. 2017[41]), ενώ η Python έχει υποστηρίξει με επιτυχία οικοδομιστικές προσεγγίσεις στη μάθηση, σε επί μέρους αντικείμενα, όπως σε media studies (βλέπε Guzdial, 2004). Άλλες προτεινόμενες προσεγγίσεις είναι η χρήση της Python για διαχείριση δεδομένων, για μελέτες σε ανθρωπιστικές σπουδές, για γεωγραφικά συστήματα πληροφοριών, κλπ.
Υπάρχει διαθέσιμο πλούσιο υλικό καιστην Ελληνική γλώσσα, πέραν της διεθνούς βιβλιογραφίας και πηγών. Για παράδειγμα στις ιστοσελίδες διαδικτυακών μαθημάτων mathesis.cup.grκαιcoursity.gr υπάρχουν διαδικτυακά μαθήματα εισαγωγής στον προγραμματισμό με Python, το περιεχόμενο των οποίων διατίθεται ελεύθερα. Στο mathesis.cup.gr υπάρχει μάθημα προχωρημένου προγραμματισμού με Python.
Επίσης οργανώνονται από σύμπραξη Ελληνικών Πανεπιστημίων καιτην υποστήριξη της ΕΛΛΑΚθερινά σχολεία στην Python.
↑Summerfield, Mark. Rapid GUI Programming with Python and Qt. Python is a very expressive language, which means that we can usually write far fewer lines of Python code than would be required for an equivalent application written in, say, C++ or Java
(Αγγλικά) Dave Kuhlman, (December 15, 2013). «A Python Book: Beginning Python, AdvancedPython, and Python Exercises». Αρχειοθετήθηκε 19/06/2018. Ανακτήθηκε 15/04/2019. Abstract:This document is a self-learning document for a course in Python programming. This course contains (1) a part for beginners, (2) a discussion of several advanced topics that are of interest to Python programmers, and (3) a Python workbook with lots of exercises.
Αναστάσιος Χατζηπαπαδόπουλος, Εκπαιδευτικός Πληροφορικής, (2018). «Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον με Python» από users.sch.gr/chatzipap/. Αρχειοθετήθηκε 17/04/2018. Ανακτήθηκε 16/04/2019. Από τον πρόλογο: «Στο βιβλίο αυτό περιέχονται προτεινόμενες/ενδεικτικές λύσεις στα πανελλαδικά θέματα Γ & Δ(έτη 2000 –2017) του μαθήματος της Ανάπτυξης Εφαρμογών σε Προγραμματιστικό Περιβάλλον μετη χρήση όμως όχι ψευδο-γλώσσας αλλά της Python(έκδοση 2.7.10) μετον τρόπο που αυτή παρουσιάζεται στα διδακτικά εγχειρίδια της Β’ καιΓ’ Τάξης του Τομέα Πληροφορικής τωνΕΠΑΛ.». (ISBN978-960-93-9926-5)