Η εντολή global στην Python

Ας υποθέσουμε ότι έχουμε μια εξωτερική καθολική μεταβλητή i. Υπάρχει επίσης μια συνάρτηση func που προσθέτει σε αυτή τη μεταβλητή μια μονάδα:

pythoni = 0
def func():
  i += 1 # θα εμφανίσει σφάλμα
  return i

Μετά την εκτέλεση του κώδικα θα επιστραφεί ένα σφάλμα, επειδή υπάρχει μια διένεξη μεταξύ της καθολικής i, που δηλώθηκε στον εξωτερικό κώδικα, και της τοπικής i, στην οποία προστίθεται 1, αλλά η ίδια η μεταβλητή δεν έχει ακόμη δηλωθεί. Για να διορθώσουμε αυτό το πρόβλημα και να κάνουμε τη συνάρτηση να δουλεύει ακριβώς με την καθολική μεταβλητή, πρέπει να χρησιμοποιήσουμε την εντολή global. Αυτή η εντολή αποτελεί μια δήλωση που εκτελείται για ολόκληρο το τρέχον μπλοκ κώδικα στο οποίο έχει οριστεί.

Ας ξαναγράψουμε το προηγούμενο παράδειγμα, δηλώνοντας στο σώμα της συνάρτησης global:

pythondef func():
  global i
  i += 1
  return i
  
print(func()) # θα εμφανίσει 1
Задание 1

Στον επόμενο κώδικα κάποιος προγραμματιστής έκανε ένα λάθος:

pythonnum = 4

def func():
  num *= 2
  return num

print(func())

Τι συμβαίνει με αυτόν τον κώδικα; Βρείτε και διορθώστε το λάθος του συγγραφέα του κώδικα.

Задание 2

Στον επόμενο κώδικα κάποιος προγραμματιστής έκανε ένα λάθος:

pythonnum = 10

def func():
  num -= 3
  return i

print(func())

Τι συμβαίνει με αυτόν τον κώδικα; Βρείτε και διορθώστε το λάθος του συγγραφέα του κώδικα.