Python Global, τοπικές και μη τοπικές μεταβλητές (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθετε για τις μεταβλητές Python Global, τις τοπικές μεταβλητές, τις μη τοπικές μεταβλητές και πού να τις χρησιμοποιήσετε.

Βίντεο: Τοπικές και παγκόσμιες μεταβλητές Python

Καθολικές μεταβλητές

Στο Python, μια μεταβλητή που δηλώνεται εκτός της συνάρτησης ή σε παγκόσμιο πεδίο είναι γνωστή ως παγκόσμια μεταβλητή. Αυτό σημαίνει ότι μια καθολική μεταβλητή μπορεί να προσπελαστεί μέσα ή έξω από τη συνάρτηση.

Ας δούμε ένα παράδειγμα για το πώς δημιουργείται μια παγκόσμια μεταβλητή στο Python.

Παράδειγμα 1: Δημιουργία καθολικής μεταβλητής

 x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)

Παραγωγή

 x εσωτερικό: παγκόσμιο x εξωτερικό: παγκόσμιο

Στον παραπάνω κώδικα, δημιουργήσαμε το x ως καθολική μεταβλητή και ορίσαμε το a foo()για να εκτυπώσουμε την καθολική μεταβλητή x. Τέλος, καλούμε το foo()οποίο θα εκτυπώσει την τιμή του x.

Τι γίνεται αν θέλετε να αλλάξετε την τιμή του x μέσα σε μια συνάρτηση;

 x = "global" def foo(): x = x * 2 print(x) foo()

Παραγωγή

 UnboundLocalError: αναφέρεται η τοπική μεταβλητή «x» πριν από την ανάθεση

Η έξοδος εμφανίζει ένα σφάλμα επειδή το Python αντιμετωπίζει το x ως τοπική μεταβλητή και το x επίσης δεν ορίζεται μέσα foo().

Για να γίνει αυτό, χρησιμοποιούμε τη globalλέξη-κλειδί. Επισκεφθείτε την Python Global Keyword για να μάθετε περισσότερα.

Τοπικές μεταβλητές

Μια μεταβλητή που δηλώνεται στο σώμα της συνάρτησης ή στο τοπικό πεδίο είναι γνωστή ως τοπική μεταβλητή.

Παράδειγμα 2: Πρόσβαση σε τοπική μεταβλητή εκτός του πεδίου εφαρμογής

 def foo(): y = "local" foo() print(y)

Παραγωγή

 NameError: το όνομα «y» δεν έχει οριστεί

Η έξοδος εμφανίζει σφάλμα επειδή προσπαθούμε να αποκτήσουμε πρόσβαση σε μια τοπική μεταβλητή y σε παγκόσμιο πεδίο, ενώ η τοπική μεταβλητή λειτουργεί μόνο εντός foo()ή τοπικού πεδίου.

Ας δούμε ένα παράδειγμα για το πώς δημιουργείται μια τοπική μεταβλητή στο Python.

Παράδειγμα 3: Δημιουργία τοπικής μεταβλητής

Κανονικά, δηλώνουμε μια μεταβλητή μέσα στη συνάρτηση για να δημιουργήσουμε μια τοπική μεταβλητή.

 def foo(): y = "local" print(y) foo()

Παραγωγή

 τοπικός

Ας ρίξουμε μια ματιά στο προηγούμενο πρόβλημα όπου το x ήταν μια παγκόσμια μεταβλητή και θέλαμε να τροποποιήσουμε το x μέσα foo().

Καθολικές και τοπικές μεταβλητές

Εδώ, θα δείξουμε πώς να χρησιμοποιούμε καθολικές μεταβλητές και τοπικές μεταβλητές στον ίδιο κώδικα.

Παράδειγμα 4: Χρήση καθολικών και τοπικών μεταβλητών στον ίδιο κώδικα

 x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()

Παραγωγή

 παγκόσμιο παγκόσμιο τοπικό

Στον παραπάνω κώδικα, δηλώνουμε το x ως καθολικό και το y ως τοπική μεταβλητή στο foo(). Στη συνέχεια, χρησιμοποιούμε τον τελεστή πολλαπλασιασμού *για να τροποποιήσουμε την καθολική μεταβλητή x και εκτυπώνουμε και τα δύο x και y.

Αφού καλέσετε το foo(), η τιμή του x γίνεται global globalεπειδή χρησιμοποιήσαμε την x * 2εκτύπωση δύο φορές global. Μετά από αυτό, εκτυπώνουμε την τιμή της τοπικής μεταβλητής y, δηλαδή local.

Παράδειγμα 5: Καθολική μεταβλητή και τοπική μεταβλητή με το ίδιο όνομα

 x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)

Παραγωγή

 τοπικό x: 10 παγκόσμιο x: 5

Στον παραπάνω κώδικα, χρησιμοποιήσαμε το ίδιο όνομα x τόσο για την καθολική μεταβλητή όσο και για την τοπική μεταβλητή. Παίρνουμε ένα διαφορετικό αποτέλεσμα όταν εκτυπώνουμε την ίδια μεταβλητή επειδή η μεταβλητή δηλώνεται και στα δύο πεδία, δηλαδή στο τοπικό εύρος μέσα foo()και στο παγκόσμιο πεδίο έξω foo().

When we print the variable inside foo() it outputs local x: 10. This is called the local scope of the variable.

Similarly, when we print the variable outside the foo(), it outputs global x: 5. This is called the global scope of the variable.

Nonlocal Variables

Nonlocal variables are used in nested functions whose local scope is not defined. This means that the variable can be neither in the local nor the global scope.

Let's see an example of how a nonlocal variable is used in Python.

We use nonlocal keywords to create nonlocal variables.

Example 6: Create a nonlocal variable

 def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()

Output

 inner: nonlocal outer: nonlocal

Στον παραπάνω κώδικα, υπάρχει μια ένθετη inner()συνάρτηση. Χρησιμοποιούμε nonlocalλέξεις-κλειδιά για να δημιουργήσουμε μια μη τοπική μεταβλητή. Η inner()συνάρτηση ορίζεται στο πεδίο μιας άλλης συνάρτησης outer().

Σημείωση : Εάν αλλάξουμε την τιμή μιας μη τοπικής μεταβλητής, οι αλλαγές εμφανίζονται στην τοπική μεταβλητή.

ενδιαφέροντα άρθρα...