Οδηγός εκμάθησης Python
***********************

Πρακτική συμβουλή:

  Αυτός ο οδηγός εκμάθησης έχει σχεδιαστεί για *προγραμματιστές* που
  είναι νέοι στην γλώσσα Python, **όχι** για *αρχάριους* που είναι
  νέοι στο προγραμματισμό.

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

Ο διερμηνέας της Python και η εκτεταμένη τυπική (standard) βιβλιοθήκη
διατίθενται ελεύθερα σε πηγαία ή δυαδική μορφή για όλες τις κύριες
πλατφόρμες από την ιστοσελίδα της Python, https://www.python.org/ και
μπορούν να διανεμηθούν ελεύθερα. Ο ίδιος ιστότοπος περιέχει επίσης
διανομές και δείκτες σε πολλά δωρεάν modules τρίτων, προγράμματα και
εργαλεία Python, καθώς και πρόσθετη τεκμηρίωση.

Ο διερμηνέας της Python επεκτείνεται εύκολα με νέες συναρτήσεις και
τύπους δεδομένων που υλοποιούνται σε C ή C++ (ή άλλες γλώσσες που
μπορούν να κληθούν από τη C). Η Python είναι επίσης κατάλληλη ως
γλώσσα επέκτασης για προσαρμόσιμες εφαρμογές.

Αυτό το tutorial εισάγει τον αναγνώστη ανεπίσημα στις βασικές έννοιες
και δυνατότητες της γλώσσας και του συστήματος Python. Λάβετε υπόψη
ότι απαιτεί να έχετε μια βασική κατανόηση του προγραμματισμού γενικά.
Βοηθάει να έχετε πρόχειρο έναν διερμηνέα Python για πρακτική εμπειρία,
αλλά όλα τα παραδείγματα είναι αυτοτελή, οπότε το tutorial μπορεί να
διαβαστεί και εκτός σύνδεσης.

Για μια περιγραφή των τυποποιημένων αντικειμένων και ενοτήτων, δείτε
The Python Standard Library. Το Εγχειρίδιο Αναφοράς της Γλώσσας Python
δίνει έναν πιο επίσημο ορισμό της γλώσσας. Για να γράψετε επεκτάσεις
σε C ή C++, διαβάστε το Επέκταση και Ενσωμάτωση του Διερμηνέα της
Python και το Python/C API Reference Manual. Υπάρχουν επίσης αρκετά
βιβλία που καλύπτουν την Python σε βάθος.

Αυτό το tutorial δεν προσπαθεί να είναι περιεκτικό και να καλύψει κάθε
χαρακτηριστικό ή ακόμη και κάθε συχνά χρησιμοποιούμενο χαρακτηριστικό.
Αντίθετα, θα σας παρουσιάσει πολλά από τα πιο αξιοσημείωτα
χαρακτηριστικά της Python και θα σας δώσει μια καλή ιδέα για τη γεύση
και το ύφος της γλώσσας. Αφού το διαβάσετε, θα είστε σε θέση να
διαβάζετε και να γράφετε modules και προγράμματα Python, και θα είστε
έτοιμοι να μάθετε περισσότερα για τα διάφoρα modules βιβλιοθηκών
Python που περιγράφονται στο The Python Standard Library.

Αξίζει επίσης να διαβάσετε το Γλωσσάρι.

* 1. Ανοίγοντας την όρεξή σας

* 2. Χρησιμοποιώντας τον Interpreter της Python

  * 2.1. Κάνοντας invoke τον Interpreter

    * 2.1.1. Εισαγωγή Ορίσματος

    * 2.1.2. Interactive Λειτουργία

  * 2.2. Ο Interpreter και το Περιβάλλον του

    * 2.2.1. Κωδικοποίηση Πηγαίου Κώδικα

* 3. Μία Άτυπη Εισαγωγή στην Python

  * 3.1. Χρησιμοποιώντας την Python ως Αριθμομηχανή

    * 3.1.1. Αριθμοί

    * 3.1.2. Κείμενο

    * 3.1.3. Λίστες

  * 3.2. Πρώτα Βήματα Προς Τον Προγραμματισμό

* 4. Περισσότερα εργαλεία Ελέγχου Ροής

  * 4.1. Προτάσεις "if"

  * 4.2. Προτάσεις "for"

  * 4.3. Η συνάρτηση "range()"

  * 4.4. "break" και "continue" Προτάσεις

  * 4.5. "else" Ρήτρες στους βρόχους

  * 4.6. Προτάσεις "pass"

  * 4.7. Προτάσεις "match"

  * 4.8. Καθορισμός Συναρτήσεων

  * 4.9. Περισσότερο για τον Καθορισμό Συναρτήσεων

    * 4.9.1. Προεπιλεγμένες Τιμές Ορίσματος

    * 4.9.2. Ορίσματα Keyword

    * 4.9.3. Ειδικές παράμετροι

      * 4.9.3.1. Παράμετροι Θέσης ή Keyword

      * 4.9.3.2. Παράμετροι Μόνο-Θέσης

      * 4.9.3.3. Ορίσματα μόνο Keyword

      * 4.9.3.4. Παραδείγματα Συναρτήσεων

      * 4.9.3.5. Ανακεφαλαίωση

    * 4.9.4. Λίστες Αυθαίρετων Ορισμάτων

    * 4.9.5. Unpacking Λίστες Ορισμάτων

    * 4.9.6. Εκφράσεις Lambda

    * 4.9.7. Συμβολοσειρές Τεκμηρίωσης

    * 4.9.8. Annotations Συναρτήσεων

  * 4.10. Intermezzo: Στυλ Κώδικα

* 5. Δομές Δεδομένων

  * 5.1. Περισσότερα για τις Λίστες

    * 5.1.1. Χρήστη Λιστών ως Στοίβες (Stacks)

    * 5.1.2. Χρήση λιστών ως Ουρές (Queues)

    * 5.1.3. Comprehensions Λίστας

    * 5.1.4. Comprehensions Ένθετων Λιστών

  * 5.2. Η δήλωση "del"

  * 5.3. Πλειάδες (Tuples) και Ακολουθίες

  * 5.4. Σύνολα (Sets)

  * 5.5. Λεξικά (Dictionaries)

  * 5.6. Τεχνικές Looping

  * 5.7. Περισσότερα για τις συνθήκες

  * 5.8. Σύγκριση ακολουθιών και άλλων τύπων

* 6. Modules

  * 6.1. Περισσότερα για τα Modules

    * 6.1.1. Εκτέλεση modules ως scripts

    * 6.1.2. Το Search Path του Module

    * 6.1.3. "Compiled" Python αρχεία

  * 6.2. Standard Modules

  * 6.3. Η συνάρτηση "dir()"

  * 6.4. Πακέτα

    * 6.4.1. Εισάγοντας * από ένα Πακέτο

    * 6.4.2. Intra-package αναφορές

    * 6.4.3. Πακέτα σε Πολλαπλούς Καταλόγους

* 7. Είσοδος και Έξοδος

  * 7.1. Ομορφότερη Μορφοποίηση Εξόδου

    * 7.1.1. Μορφοποιημένα String Literals

    * 7.1.2. Η μέθοδος String format()

    * 7.1.3. Χειροκίνητη Μορφοποίηση Συμβολοσειρών

    * 7.1.4. Παλιά μορφοποίηση συμβολοσειράς

  * 7.2. Ανάγνωση και Εγγραφή Αρχείων

    * 7.2.1. Μέθοδοι Αντικειμένων Αρχείων

    * 7.2.2. Αποθήκευση δομημένων δεδομένων με "json"

* 8. Σφάλματα και Εξαιρέσεις

  * 8.1. Syntax Errors (Συντακτικά Σφάλματα)

  * 8.2. Exceptions (Εξαιρέσεις)

  * 8.3. Διαχείριση Εξαιρέσεων

  * 8.4. Raising Εξαιρέσεων

  * 8.5. Αλυσιδωτές Εξαιρέσεις

  * 8.6. Εξαιρέσεις που καθορίζονται από το χρήστη

  * 8.7. Καθορισμός ενεργειών καθαρισμού

  * 8.8. Προκαθορισμένες ενέργειες καθαρισμού

  * 8.9. Raising και Χειρισμός Πολλαπλών Άσχετων Εξαιρέσεων

  * 8.10. Εμπλουτίζοντας τις Εξαιρέσεις με Σημειώσεις

* 9. Κλάσεις

  * 9.1. Λίγα λόγια για Ονόματα και Αντικείμενα

  * 9.2. Εμβέλεια και Πεδία Ονομάτων στην Python

    * 9.2.1. Παράδειγμα Εμβέλειας και Χώρων Ονομάτων

  * 9.3. Μια πρώτη ματιά στις Κλάσεις

    * 9.3.1. Σύνταξη Ορισμού Κλάσης

    * 9.3.2. Αντικείμενα Κλάσης

    * 9.3.3. Αντικείμενα Στιγμιοτύπων

    * 9.3.4. Αντικείμενα Μεθόδου

    * 9.3.5. Μεταβλητές Κλάσης και Στιγμιότυπου

  * 9.4. Τυχαίες Παρατηρήσεις

  * 9.5. Κληρονομικότητα

    * 9.5.1. Πολλαπλή Κληρονομικότητα

  * 9.6. Ιδιωτικές Μεταβλητές

  * 9.7. Μικροπράγματα

  * 9.8. Επαναλήπτες

  * 9.9. Γεννήτορες (Generators)

  * 9.10. Εκφράσεις Γεννήτορων

* 10. Σύντομη ξενάγηση στην Standard Βιβλιοθήκη

  * 10.1. Διεπαφή Λειτουργικού Συστήματος

  * 10.2. Wildcard Αρχεία

  * 10.3. Ορίσματα γραμμής εντολών

  * 10.4. Ανακατεύθυνση εξόδου σφάλματος και τερματισμός προγράμματος

  * 10.5. Ταίριασμα μοτίβων συμβολοσειρών

  * 10.6. Μαθηματικά

  * 10.7. Πρόσβαση στο Διαδίκτυο

  * 10.8. Ημερομηνίες και ώρες

  * 10.9. Συμπίεση Δεδομένων

  * 10.10. Μέτρηση επίδοσης

  * 10.11. Έλεγχος ποιότητας

  * 10.12. Batteries Included

* 11. Σύντομη περιήγηση στην Πρότυπη Βιβλιοθήκη --- Μέρος II

  * 11.1. Μορφοποίηση εξόδου

  * 11.2. Templating

  * 11.3. Εργασία με δυαδικές διατάξεις εγγραφής δεδομένων

  * 11.4. Multi-threading

  * 11.5. Logging

  * 11.6. Αδύναμες αναφορές

  * 11.7. Εργαλεία για εργασία με λίστες

  * 11.8. Δεκαδική Αριθμητικής Κινητής Υποδιαστολής

* 12. Εικονικά Περιβάλλοντα και πακέτα

  * 12.1. Εισαγωγή

  * 12.2. Δημιουργία εικονικών περιβάλλοντων

  * 12.3. Διαχείριση Πακέτων με το pip

* 13. Και τώρα τι;

* 14. Διαδραστική Επεξεργασία Input και Αντικατάσταση Ιστορικού

  * 14.1. Συμπλήρωση Tab και Επεξεργασία Ιστορικού

  * 14.2. Εναλλακτικές λύσεις για τον Διαδραστικό Interpreter

* 15. Αριθμητική Κινητής Υποδιαστολής:  Ζητήματα και Περιορισμοί

  * 15.1. Σφάλμα Αναπαράστασης

* 16. Παράρτημα

  * 16.1. Διαδραστική Λειτουργία

    * 16.1.1. Διαχείριση Σφαλμάτων

    * 16.1.2. Εκτελέσιμα Python Scripts

    * 16.1.3. Το διαδραστικό αρχείο εκκίνησης

    * 16.1.4. Τα Modules Προσαρμογής
