Αποχρώσεις εργασίας με εμβέλειες ορατότητας στην Python
Ας εξετάσουμε τις σημαντικές αποχρώσεις εργασίας με τοπικές και καθολικές μεταβλητές.
Ας υποθέσουμε ότι έχουμε μια καθολική μεταβλητή num.
Ας δημιουργήσουμε μια συνάρτηση func,
που θα εμφανίζει την καθολική num
στην κονσόλα:
num = 1
def func():
print(num)
func() # θα εμφανίσει 1
Τώρα ας δηλώσουμε μια τοπική num στη
γραμμή κάτω από τη συνάρτηση print. Μετά την
εκτέλεση του κώδικα, στην κονσόλα θα εμφανιστεί σφάλμα.
Αυτό συμβαίνει επειδή η Python
μέσα στη συνάρτηση αντιλαμβάνεται την num
μόνο ως τοπική μεταβλητή, που
δεν έχει ακόμη δηλωθεί:
num = 1
def func():
print(num) # θα εμφανίσει σφάλμα
num = 2
Ας ξαναγράψουμε τώρα τον κώδικα μέσα στη συνάρτηση
έτσι ώστε η τιμή της μεταβλητής num
να αυξηθεί κατά 2:
num = 1
def func():
num += 2 # θα εμφανίσει σφάλμα
Το σφάλμα προκαλείται από το γεγονός ότι η έκφραση num += 2
αντιπροσωπεύει την ακόλουθη εγγραφή:
num = num + 2
Ωστόσο, η ίδια η τοπική μεταβλητή, στην οποία προσθέτουμε, δεν έχει ακόμη δηλωθεί. Και κατά συνέπεια η Python εμφανίζει σφάλμα, αφού δεν μπορούμε να προσθέσουμε έναν αριθμό σε μια μη υπάρχουσα τιμή.
Ποιο θα είναι το αποτέλεσμα εκτέλεσης του ακόλουθου κώδικα:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Ποιο θα είναι το αποτέλεσμα εκτέλεσης του ακόλουθου κώδικα:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Ποιο θα είναι το αποτέλεσμα εκτέλεσης του ακόλουθου κώδικα:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)