Μεταβλητές (variables)

Οι ματαβλητές χρησιμοποιούνται για την προσωρινή αποθήκευση δεδομένων. Μία μεταβλητή μπορεί να περιέχει αριθμητικές τιμές, κείμενο, τιμές Boolean (true ή false) ή ακόμα τιμές τύπου List, Tuple, Dictionary κλπ.

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

Τύποι δεδομέων (Standard Data Types)

Οι τύποι δεδομένων στην Python είναι:

  • Αριθμητικές τιμές (Numeric Types)
  • Συμβολοσειρές (Text Type, Strings)
  • Τιμές bool (Boolean Type)
  • Δυαδικές τιμές (Binary Types)
  • Τιμή None (None Type)
  • Συλλογές (Collections: list, tuple, dictionary, range, set, frozenset)

Δήλωση μεταβλητών

Για να δηλώσετε μια μεταβλητή δεν χρησιμοποιείτε κάποιο πρόθεμα όπως σε άλλες γλώσεες. Απλά γράφετε το όνομα της μεταβλητής και καταχωρείτε την αντίστοιχη τιμή. Για παράδειγμα:

word    = 'word'    # Συμβολοσειρά (string)
counter = 100       # Αριθμητική ακέραιη τιμή
miles   = 10.5657   # Αριθμητική δεκαδική τιμή
name    = "Yiannis" # Συμβολοσειρά (string)
isOn    = True      # Τιμή τύπου bool
word    = None      # Τιμή τύπου None

Για να δηλώσετε περισσότερες μεταβλητές μπορείτε να χρησιμοποιήσετε εκφράσεις όπως:

a = b = c = 10

ή

a, b, c = 30, 40, "Anna"

Ο τύπος της μεταβλητής ορίζεται από τον τύπο της τιμής την οποία εκχωρούμε.

Διαγραφή μεταβλητών

Μπορείτε να διαγράψετε μια μεταβλητή με την εντολή del.

a = 10
print(a) # 10 

del a
print(a) # NameError: name 'a' is not defined    

Για περισσότερες μεταβλητές:

del a, b, c

Εκτύπωση μεταβλητών

Μπορείτε να εκτυπώσετε και να δείτε τις τιμές των μεταβλητών με την εντολή print(). Για παράδειγμα:

print(word)      # word
print(counter)   # 100
print(miles)     # 10.5657
print(name)      # Yiannis
print(isOn)      # True
print(word)      # None

Ανάγνωση τύπου μεταβλητής

Για να διαβάσετε τον τύπο μιας μεταβλητής χρησιμοποιείτε τη συνάρτηση type().

x = 15
y = "Mike"
print(type(x)) # 'int'
print(type(y)) # 'str'

Casting μεταβλητών

Με το casting μπορείτε να αλλάξετε τον τύπο σε περιπτώσεις όπως παρακάτω:

x = int(1)       # x will be 1
y = int(2.8)     # y will be 2
z = int("3")     # z will be 3

x = float(1)     # x will be 1.0
y = float(2.8)   # y will be 2.8
z = float("3")   # z will be 3.0
w = float("4.2") # w will be 4.2

x = str("s1")    # x will be 's1'
y = str(2)       # y will be '2'
z = str(3.0)     # z will be '3.0' 

Python Strings

Η συμβολοσειρά στην python μπορεί να καταχωρηθεί με διπλά ή μονά εισαγωγικά και θεωρείται ως ένας πίνακας στοιχείων όπου κάθε στοιχείο είναι ένας χαρακτήρας ή σύμβολο.

Ισχύουν τα παρακάτω:

str = 'Hello World!'

print str          # Εκτυπώνει ολόκληρη συμβολοσειρά
print str[0]       # Εκτυπώνει πρώτο χαρακτήρα
print str[2:5]     # Εκτυπώνει χαρακτήρες από 3ο μέχρι 5ο
print str[2:]      # Εκτυπώνει χαρακτήρες από 3ο μέχρι τέλος
print str * 2      # Εκτυπώνει συμβολοσειρά δύο φορές
print str + "TEST" # Εκτυπώνει συνενωμένες συμβολοσειρές

Με αποτέλεσμα:

Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST

Η αρίθμηση των στοιχείων αρχίζει από το μηδέν.

F-Strings

Ένα string μπορεί να μετατραπεί σε f-string αν προσθέσουμε το γράμμα f μπροστά από το string:

name = f"My name is Nobody"

Με τα f-strings μπορούμε να έχουμε δυναμικά strings περνώντας placeholders μέσα στο κείμενο. Τα placeholders καταχωρούνται σε άγκιστρα και κρατάνε μεταβλητές, εντολές ή κάνουν κλήση σε συνάρτηση.

fname = "Bob"
lname = "Marley"
fullName = f"My full name is {fname} {lname}"
print(fullName)
My full name is Bob Marley

Αριθμητικές τιμές σε δεκαδική μορφή

price = 100
cost = f"The cost is {price:.2f} euros"
print(cost)
The cost is 100.00 euros

Πράξεις στο placeholder

price = 100
cost = f"The cost with vat is {price*1.24} euros"
print(cost)
The cost with vat is 124.0 euros

ή

price = 100
vat = 0.24
cost = f"The cost is {price + (price * vat)} euros"
print(cost)
The cost is 124.0 euros

Παράδειγμα με if ... else

price = 100
cost = f"This product is {'Expensive' if price>50 else 'Cheap'}"
print(cost)
This product is Expensive

Παράδειγμα με κλήση συνάρτησης

def OddEven(n):
    if(n%2 == 1):
        return "Odd"
    else:
        return "Even"

number = 121
result = f"The number {number} is {OddEven(number)}"
print(result)
The number 121 is Odd

Τροποποιητές (Modifiers)

Δηλώνονται με : αμέσως μετά το placeholder και αλλάζουν την μορφή της τιμής.

Το κόμμα για παράδειγμα εμφανίζει έναν αριθμό χωρισμένο σε χιλιάδες με κόμμα.
price = 123000
cost = f"The cost is {price:,} euros"
print(cost)
The cost is 123,000 euros

Για περισσότερες επιλογές: python_string_formatting

Πριν την έκδοση 3.6 ίσχυε η εντολή format()

Μετατροπές τύπων μεταβλητών (Casting)

Υπάρχουν περιπτώσεις που μπορούμε να αλλάξουμε τον τύπο δεδομένων μιας μεταβλητής. Οι εντολές είναι:

int(x [,base])
    #Converts x to an integer. The base specifies the base if x is a string.
float(x)
    #Converts x to a floating-point number.
complex(real [,imag])
    #Creates a complex number.
str(x)
    #Converts object x to a string representation.
repr(x)
    #Converts object x to an expression string.
eval(str)
    #Evaluates a string and returns an object.
tuple(s)
    #Converts s to a tuple.
list(s)
    #Converts s to a list.
set(s)
    #Converts s to a set.
dict(d)
    #Creates a dictionary. d must be a sequence of (key,value) tuples.
frozenset(s)
    #Converts s to a frozen set.
chr(x)
    #Converts an integer to a character
unichr(x)
    #Converts an integer to a Unicode character
ord(x)
    #Converts a single character to its integer value
hex(x)
    #Converts an integer to a hexadecimal string
oct(x)
    #Converts an integer to an octal string

Η ζωή μιας μεταβλητής

Κάθε μεταβλητή δεσμεύει μνήμη και για το λόγο αυτό θα πρέπει να χρησιμοποιείται μόνο όταν χρειάζεται. Έτσι κάθε μεταβλητή έχει ημερομηνία λήξεως και γεννιέται όταν την δηλώνουμε. Αν η μεταβλητή είναι δηλωμένη μέσα σε μία συνάρτηση, τότε ζει μέχρι να ολοκληρωθεί η εκτέλεση της συνάρτησης. Όταν η συνάρτηση τελειώσει, διαγράφεται και η μεταβλητή από την μνήμη. Στην περίπτωση αυτή, οι μεταβλητές αυτές λέγονται local (τοπικές). Αν οι μεταβλητές είναι δηλωμένες εκτός των συναρτήσεων τότε οι μεταβλητές αυτές λέγονται global (καθολικές ή παγκόσμιες ή ολικές). Οι global μεταβλητές ζουν όσο τρέχει η εφαρμογή.

x = "easy"

def pyfun():
    x = "fun"
    print("Python is " + x) # Python is fun

pyfun()

print("Python is " + x) # Python is easy

Ονόματα μεταβλητών

Για την ονομασία μεταβλητών ισχύουν τα παρακάτω:

  • Το όνομα πρέπει να αρχίζει με γράμμα ή την κάτω παύλα (_)
  • Το όνομα δεν μπορεί να αρχίζει με αριθμό
  • Το όνομα μπορεί να περιέχει αλφαριθμητικούς χαρακτήρες και την κάτω παύλα (A-z, 0-9, και _ )
  • Τα ονόματα είναι case-sensitive. Δηλαδή το Big είναι διαφορετικό από το big
  • Το όνομα δεν μπορεί να είναι ίδιο με δεσμευμένη λέξη όπως print