Η εντολή global στην Python
Ας υποθέσουμε ότι έχουμε μια εξωτερική καθολική
μεταβλητή i. Υπάρχει επίσης μια συνάρτηση
func που προσθέτει σε αυτή τη μεταβλητή
μια μονάδα:
i = 0
def func():
i += 1 # θα εμφανίσει σφάλμα
return i
Μετά την εκτέλεση του κώδικα θα επιστραφεί ένα σφάλμα,
επειδή υπάρχει μια διένεξη μεταξύ της καθολικής
i, που δηλώθηκε στον εξωτερικό κώδικα, και
της τοπικής i, στην οποία προστίθεται
1, αλλά η ίδια η μεταβλητή δεν έχει
ακόμη δηλωθεί. Για να διορθώσουμε αυτό
το πρόβλημα και να κάνουμε τη συνάρτηση να δουλεύει ακριβώς με
την καθολική μεταβλητή, πρέπει να χρησιμοποιήσουμε
την εντολή global. Αυτή η εντολή
αποτελεί μια δήλωση που
εκτελείται για ολόκληρο το τρέχον μπλοκ κώδικα
στο οποίο έχει οριστεί.
Ας ξαναγράψουμε το προηγούμενο παράδειγμα, δηλώνοντας
στο σώμα της συνάρτησης global:
def func():
global i
i += 1
return i
print(func()) # θα εμφανίσει 1
Στον επόμενο κώδικα κάποιος προγραμματιστής έκανε ένα λάθος:
num = 4
def func():
num *= 2
return num
print(func())
Τι συμβαίνει με αυτόν τον κώδικα; Βρείτε και διορθώστε το λάθος του συγγραφέα του κώδικα.
Στον επόμενο κώδικα κάποιος προγραμματιστής έκανε ένα λάθος:
num = 10
def func():
num -= 3
return i
print(func())
Τι συμβαίνει με αυτόν τον κώδικα; Βρείτε και διορθώστε το λάθος του συγγραφέα του κώδικα.