Πίνακας συντομεύσεων γλώσσας Python
Η Python είναι μια γλώσσα προγραμματισμού υπολογιστών πολλαπλών πλατφορμών. Είναι μια αντικειμενοστραφής γλώσσα δυναμικού τύπου, που αρχικά σχεδιάστηκε για τη σύνταξη σεναρίων αυτοματοποίησης (shell). Με τη συνεχή ενημέρωση των εκδόσεων και την προσθήκη νέων γλωσσικών δυνατοτήτων, χρησιμοποιείται όλο και περισσότερο για την ανάπτυξη ανεξάρτητων, μεγάλης κλίμακας έργων.
Γενικά
- Η Python διακρίνει πεζά από κεφαλαία γράμματα
- Η δεικτοδότηση στην Python ξεκινά από το 0
- Η Python χρησιμοποιεί κενά (στηλοθέτες ή διαστήματα) για την εσοχή του κώδικα αντί για τη χρήση αγκύλων.
Βοήθεια (Help)
| Αρχική σελίδα βοήθειας | help() |
| Βοήθεια για συναρτήσεις | help(str.replace) |
| Βοήθεια για ενότητες | help(re) |
Ενότητες (Βιβλιοθήκες)
| Λίστα περιεχομένων ενότητας | dir(module1) |
| Φόρτωση ενότητας | import module1 * |
| Κλήση συνάρτησης από ενότητα | module1.func1() |
Η δήλωση import δημιουργεί έναν νέο χώρο ονομάτων και εκτελεί όλες τις δηλώσεις στο συσχετισμένο αρχείο .py εντός αυτού του χώρου ονομάτων. Εάν θέλετε να φορτώσετε περιεχόμενο ενότητας στον τρέχοντα χώρο ονομάτων, χρησιμοποιήστε το “from module1 import *”
Βαθμωτοί τύποι (Scalar Types)
Έλεγχος τύπου δεδομένων: type(variable)
Ακέραιοι (Integers)
int/long - Οι μεγάλοι ακέραιοι μετατρέπονται αυτόματα σε μεγάλους ακεραίους (στην Python 3 υπάρχει μόνο η int που χειρίζεται οποιοδήποτε μέγεθος).
Αριθμοί κινητής υποδιαστολής (Floats)
float - 64 bit, δεν υπάρχει τύπος "double".
Λογικές τιμές (Booleans)
bool - Αληθές (True) ή Ψευδές (False).
Συμβολοσειρές (Strings)
str - Python 2.x προεπιλογή: ASCII; Python 3: Unicode.
- Οι συμβολοσειρές μπορούν να είναι σε μονά/διπλά/τριπλά εισαγωγικά.
- Μια συμβολοσειρά είναι μια ακολουθία χαρακτήρων, επομένως μπορεί να αντιμετωπιστεί όπως οποιαδήποτε άλλη ακολουθία.
- Οι ειδικοί χαρακτήρες μπορούν να αναπαρασταθούν με το πρόθεμα \ ή με ακατέργαστα (raw) strings που ξεκινούν με r.
str1 = r'this\f?ff' - Η μορφοποίηση συμβολοσειράς μπορεί να επιτευχθεί με διάφορους τρόπους.
template = '%.2f %s haha $%d' str1 = template % (4.88, 'hola', 2)
str(), bool(), int() και float() είναι επίσης συναρτήσεις ρητής μετατροπής τύπου.
Τιμή Null (Κενό)
NoneType(None) - Η τιμή ’null’ της Python (υπάρχει μόνο ένα στιγμιότυπο του αντικειμένου None).
- Το None δεν είναι δεσμευμένη λέξη-κλειδί, αλλά το μοναδικό στιγμιότυπο του “NoneType”.
- Το None είναι μια κοινή προεπιλεγμένη τιμή για προαιρετικές παραμέτρους συναρτήσεων:
def func1(a, b, c = None) - Συνήθης χρήση του None:
if variable is None :
Ημερομηνία και ώρα
datetime - Η ενσωματωμένη ενότητα της Python “datetime” παρέχει τους τύπους “datetime”, “date”, “time” κ.λπ.
- Το “datetime” συνδυάζει πληροφορίες που αποθηκεύονται στα “date” και “time”.
Δημιουργία ημερομηνίας/ώρας από string dt1 = datetime.strptime(‘20091031’, ‘%Y%m%d’) Λήψη αντικειμένου “date” dt1.date() Λήψη αντικειμένου “time” dt1.time() Μορφοποίηση ημερομηνίας/ώρας σε string dt1.strftime(’%m/%d/%Y %H:%M’) Τροποποίηση τιμής πεδίου dt2 = dt1.replace(minute = 0, second=30) Λήψη διαφοράς diff = dt1 - dt2 # Το diff είναι αντικείμενο ‘datetime.timedelta’
Δομές δεδομένων
Πλειάδες (Tuples)
Η πλειάδα είναι μια ακολουθία σταθερού μήκους που δεν μπορεί να τροποποιηθεί.
| Δημιουργία πλειάδας | tup1=4,5,6 or tup1 = (6,7,8) |
| Δημιουργία ένθετης πλειάδας | tup1 = (4,5,6), (7,8) |
| Μετατροπή ακολουθίας ή επαναλήπτη σε πλειάδα | tuple([1, 0, 2]) |
| Σύνδεση πλειάδων | tup1 + tup2 |
| Αποσυσκευασία πλειάδας | a, b, c = tup1 |
| Εναλλαγή μεταβλητών | b, a = a, b |
Λίστες (Lists)
Η λίστα είναι μια ακολουθία μεταβλητού μήκους με στοιχεία που μπορούν να τροποποιηθούν.
| Δημιουργία λίστας | list1 = [1, ‘a’, 3] or list1 = list(tup1) |
| Σύνδεση λιστών | list1 + list2 or list1.extend(list2) |
| Προσθήκη σε λίστα | list1.append(‘b’) |
| Εισαγωγή σε συγκεκριμένη θέση | list1.insert(posIdx, ‘b’) |
| Αφαίρεση μέσω δείκτη | valueAtIdx = list1.pop(posIdx) |
| Αφαίρεση της πρώτης εμφάνισης μιας τιμής | list1.remove(‘a’) |
| Έλεγχος αν η τιμή υπάρχει στη λίστα | 3 in list1 => True |
| Ταξινόμηση λίστας | list1.sort() |
| Ταξινόμηση με προσαρμοσμένη συνάρτηση | list1.sort(key = len) # ταξινόμηση κατά μήκος |
Σημείωση:
- Ο δείκτης “έναρξης” (start) περιλαμβάνεται, αλλά ο δείκτης “διακοπής” (stop) όχι.
- Τα start/stop μπορούν να παραλειφθούν, η προεπιλογή είναι η αρχή/το τέλος.
Τεμαχισμός (Slicing)
Οι τύποι ακολουθίας περιλαμβάνουν ‘str’, ‘array’, ’tuple’, ’list’ κ.λπ.
list1[start:stop]
list1[start:stop:step]
list1[::2]
str1[::-1]Λεξικά (Dictionaries / Hash)
| Δημιουργία λεξικού | dict1 ={‘key1’ :‘value1’, 2 :[3, 2]} |
| Κατασκευή λεξικού μέσω zip | dict(zip(keyList, valueList)) |
| Λήψη στοιχείου | dict1[‘key1’] |
| Αλλαγή/Προσθήκη στοιχείου | dict1[‘key1’] = ’newValue’ |
| Λήψη τιμής, διαφορετικά προεπιλογή | dict1.get(‘key1’, defaultValue) |
| Έλεγχος αν υπάρχει το κλειδί | ‘key1’ in dict1 |
| Διαγραφή στοιχείου | del dict1[‘key1’] |
| Λήψη λίστας κλειδιών | dict1.keys() |
| Λήψη λίστας τιμών | dict1.values() |
| Ενημέρωση τιμών | dict1.update(dict2) # οι τιμές του dict1 αντικαθίστανται από το dict2 |
Σύνολα (Sets)
Το σύνολο είναι μια μη διατεταγμένη συλλογή μοναδικών στοιχείων.
| Δημιουργία συνόλου | set([3, 6, 3]) or {3, 6, 3} |
| Έλεγχος υποσυνόλου | set1.issubset(set2) |
| Έλεγχος υπερσυνόλου | set1.issuperset(set2) |
| Έλεγχος ισότητας συνόλων | set1 == set2 |
| Ένωση (or) | set1 |
| Τομή (and) | set1 & set2 |
| Διαφορά | set1 - set2 |
| Συμμετρική διαφορά (xor) | set1 ^ set2 |
Συναρτήσεις
-
Βασική μορφή
def func1(posArg1, keywordArg1 = 1, ..): -
“Οι συναρτήσεις είναι αντικείμενα” - Συνήθης χρήση:
def func1(ops = [str.strip, user_define_func, ..], ..): for function in ops: value = function(value) -
Τιμές επιστροφής
- Εάν δεν υπάρχει δήλωση return στο τέλος της συνάρτησης, δεν επιστρέφεται καμία τιμή (None).
- Επιστροφή πολλαπλών τιμών μέσω ενός αντικειμένου πλειάδας.
return (value1, value2) value1, value2 = func1(..) -
Ανώνυμες συναρτήσεις (Lambda)
lambda x : x * 2 # ισοδύναμο με: # def func1(x) : return x * 2
Συχνές συναρτήσεις
-
Enumerate: επιστρέφει μια ακολουθία πλειάδων (κλειδί, τιμή), όπου το κλειδί είναι ο δείκτης του τρέχοντος στοιχείου.
for key, val in enumerate(collection): -
Sorted: εκτελεί λειτουργία ταξινόμησης σε οποιοδήποτε επαναλήψιμο αντικείμενο.
sorted([2, 1, 3]) => [1, 2, 3] -
Zip: ομαδοποιεί τα αντίστοιχα στοιχεία των αντικειμένων σε πλειάδες και επιστρέφει μια λίστα που αποτελείται από αυτές τις πλειάδες.
zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..] -
Reversed: επιστρέφει έναν αντίστροφο επαναλήπτη.
list(reversed(range(10)))
Έλεγχος και ροή (Control Flow)
-
Τελεστές για συνθήκες “if else”:
Έλεγχος αν δύο μεταβλητές είναι το ίδιο αντικείμενο var1 is var2 Έλεγχος αν δύο μεταβλητές είναι διαφορετικά αντικείμενα var1 is not var2 Έλεγχος αν δύο μεταβλητές έχουν την ίδια τιμή var1 == var2 -
Συνήθης χρήση του τελεστή for:
for element in iterator : -
‘pass’ - Δεν κάνει τίποτα, χρησιμοποιείται συνήθως ως δήλωση κράτησης θέσης.
-
Τριαδική έκφραση (Ternary expression)
value = true-expr if condition else false-expr -
Δεν υπάρχουν δηλώσεις switch/case, χρησιμοποιείται το if/elif.
Αντικειμενοστρέφεια (OOP)
-
Το ‘object’ είναι η βάση για όλους τους τύπους Python.
-
Οτιδήποτε (αριθμοί, συμβολοσειρές, συναρτήσεις, κλάσεις, ενότητες κ.λπ.) είναι ένα αντικείμενο και κάθε αντικείμενο έχει έναν ’type’. Οι μεταβλητές αντικειμένων είναι δείκτες προς τη θέση τους στη μνήμη.
-
Βασική μορφή αντικειμένου
class MyObject(object): # Το 'self' αντιστοιχεί στο 'this' στη Java/C++ def __init__(self, name): self.name = name def memberFunc1(self, arg1): .. @staticmethod def classFunc2(arg1): .. obj1 = MyObject('name1') obj1.memberFunc1('a') MyObject.classFunc2('b') -
Διαδραστικά εργαλεία:
dir(variable1) # Λίστα όλων των διαθέσιμων μεθόδων στο αντικείμενο
Λειτουργίες συμβολοσειρών
Σύνδεση λίστας/πλειάδας με διαχωριστικό:
', '.join([ 'v1', 'v2', 'v3']) => 'v1, v2, v3'Μορφοποίηση συμβολοσειράς:
string1 = 'My name is {0} {name}'
newString1 = string1.format('Sean', name = 'Chen')Διαχωρισμός συμβολοσειράς:
sep = '-'
stringList1 = string1.split(sep)Λήψη υποσυμβολοσειράς (slice):
start = 1
string1[start:8]Συμπλήρωση συμβολοσειράς με μηδενικά (z-fill):
month = '5'
month.zfill(2) => '05'
month = '12'
month.zfill(2) => '12'Χειρισμός εξαιρέσεων (Exception Handling)
- Βασική μορφή
try:
..
except ValueError as e:
print(e)
except (TypeError, AnotherError):
..
except:
..
finally:
..- Χειροκίνητη πρόκληση εξαίρεσης
raise AssertionError # αποτυχία διαβεβαίωσης
raise SystemExit # αίτημα εξόδου προγράμματος
raise RuntimeError('Error message :..')Συμπεριλήψεις λίστας, συνόλου και λεξικού (Comprehensions)
Συντακτική “ζάχαρη” για να γίνει ο κώδικας ευκολότερος στην ανάγνωση και τη γραφή.
-
Συμπλήρωση λίστας (List Comprehension):
Συνοπτικός σχηματισμός μιας νέας λίστας φιλτράροντας τα στοιχεία μιας συλλογής και μετασχηματίζοντας τα στοιχεία που περνούν το φίλτρο σε μια συνοπτική έκφραση.
Βασική μορφή:
[expr for val in collection if condition]Συντόμευση για:
result = [] for val in collection: if condition: result.append(expr) -
Συμπλήρωση λεξικού (Dictionary Comprehension):
{key-expr : value-expr for value in collection if condition} -
Συμπλήρωση συνόλου (Set Comprehension): Ίδια με τη συμπλήρωση λίστας, αλλά με τη χρήση {} αντί για [].
-
Ένθετη συμπλήρωση λίστας:
Βασική μορφή:
[expr for val in collection for innerVal in val if condition]