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

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

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

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

  • Numbers
  • String
  • List
  • Tuple
  • Dictionary

Δήλωση μεταβλητής

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

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

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

print(counter)
print(miles)
print(name)

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

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

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

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

Python Lists

Είναι ένα σύνολο διατεταγμένο με στοιχεία που μπορεί να ανήκουν σε διαφορετικούς τύπους δεδομένων.

Δηλώνονται μέσα σε αγκύλες.

list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print list              # Εκτυπώνει ολόκληρη λίστα
print list[0]           # Εκτυπώνει πρώτο στοιχείο
print list[1:3]         # Εκτυπώνει από το 2ο μέχρι το 3ο στοιχείο 
print list[2:]          # Εκτυπώνει στοιχεία από το 3ο και μετά
print tinylist * 2      # Εκτυπώνει τη λίστα δύο φορές
print list + tinylist   # Εκτυπώνει συνενωμένες λίστες

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

['abcd', 786, 2.23, 'john', 70.2]
abcd
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.2, 123, 'john']    

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

Python Tuples

Όπως και με τις Lists, το tuple είναι ένα σύνολο διατεταγμένο με στοιχεία που μπορεί να ανοίκουν σε διαφορετικούς τύπους δεδομέων.

Η διαφορά είναι ότι το tuple δεν μπορεί να αλλάξει. Είναι κάτι σαν constant ή read-only.

Επίσης το tuple καταχωρείται σε παρενθέσεις και η αναφορά στα στοιχεία γίνεται με αγκύλες.

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
tinytuple = (123, 'john')

print tuple             # Εκτυπώνει ολόκληρη λίστα
print tuple[0]          # Εκτυπώνει πρώτο στοιχείο
print tuple[1:3]        # Εκτυπώνει από το 2ο μέχρι το 3ο στοιχείο 
print tuple[2:]         # Εκτυπώνει στοιχεία από το 3ο και μετά
print tinytuple * 2     # Εκτυπώνει τη λίστα δύο φορές
print tuple + tinytuple # Εκτυπώνει συνενωμένες λίστες

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

('abcd', 786, 2.23, 'john', 70.2)
abcd
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.2, 123, 'john')

Παράδειγμα με λάθος.

tuple = ('abcd', 786 , 2.23, 'john', 70.2 )
list = ['abcd', 786 , 2.23, 'john', 70.2 ]
tuple[2] = 1000    # μη έγκυρο
list[2] = 1000     # έγκυρο

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

Python Dictionary

Αποτελείται από ένα σύνολο ζευγών key-value. Κάτι ανάλογο με συσχετισμένους πίνακες ή JSON objects.

Δεν ισχύει κάποια διάταξη.

Δηλώνονται σε άγκυστρα και η αναφορά στα στοιχεία γίνεται επίσης με αγκύλες.

dict = {}
dict['one'] = "This is one"
dict[2]     = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}

print dict['one']       # Εκτυπώνει τιμή για το κλειδί 'one'
print dict[2]           # Εκτυπώνει τιμή για το κλειδί 2
print tinydict          # Εκτυπώνει το πλήρες dictionary
print tinydict.keys()   # Εκτυπώνει όλα τα κλειδιά
print tinydict.values() # Εκτυπώνει όλες τις τιμές    

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

This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']

Μετατροπές τύπων μεταβλητών (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 μεταβλητές ζουν όσο τρέχει η εφαρμογή.

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

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

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