Περισσότερα
Χρήση παγκόσμιων μεταβλητών σε μια συνάρτηση
Πώς μπορώ να δημιουργήσω ή να χρησιμοποιήσω μια παγκόσμια μεταβλητή σε μια συνάρτηση;
Αν δημιουργήσω μια παγκόσμια μεταβλητή σε μια συνάρτηση, πώς μπορώ να χρησιμοποιήσω αυτή την παγκόσμια μεταβλητή σε μια άλλη συνάρτηση; Πρέπει να αποθηκεύσω την παγκόσμια μεταβλητή σε μια τοπική μεταβλητή της συνάρτησης που χρειάζεται την πρόσβασή της;
2925
3
Μπορείτε να χρησιμοποιήσετε μια παγκόσμια μεταβλητή σε άλλες συναρτήσεις δηλώνοντάς την ως
global
σε κάθε συνάρτηση που της αναθέτει:Φαντάζομαι ότι ο λόγος γι' αυτό είναι ότι, αφού οι παγκόσμιες μεταβλητές είναι τόσο επικίνδυνες, η Python θέλει να βεβαιωθεί ότι πραγματικά γνωρίζετε ότι με αυτές παίζετε, απαιτώντας ρητά τη λέξη κλειδί
global
.Δείτε άλλες απαντήσεις αν θέλετε να μοιραστείτε μια παγκόσμια μεταβλητή σε διάφορες ενότητες.
Ίσως θελήσετε να εξερευνήσετε την έννοια των namespaces. Στην Python, το module είναι το φυσικό μέρος για παγκόσμια δεδομένα:
Μια συγκεκριμένη χρήση της global-in-a-module περιγράφεται εδώ - How do I share global variables across modules?, και για λόγους πληρότητας τα περιεχόμενα μοιράζονται εδώ:
Αν θέλετε να αναφερθείτε σε μια παγκόσμια μεταβλητή σε μια συνάρτηση, μπορείτε να χρησιμοποιήσετε τη λέξη-κλειδί global για να δηλώσετε ποιες μεταβλητές είναι παγκόσμιες. Δεν χρειάζεται να το χρησιμοποιείτε σε όλες τις περιπτώσεις (όπως κάποιος εδώ ισχυρίζεται λανθασμένα) - αν το όνομα που αναφέρεται σε μια έκφραση δεν μπορεί να βρεθεί στην τοπική εμβέλεια ή στις εμβέλειες των συναρτήσεων στις οποίες ορίζεται αυτή η συνάρτηση, αναζητείται μεταξύ των παγκόσμιων μεταβλητών.
Ωστόσο, αν αναθέσετε σε μια νέα μεταβλητή που δεν έχει δηλωθεί ως global στη συνάρτηση, αυτή δηλώνεται σιωπηρά ως local και μπορεί να επισκιάσει οποιαδήποτε υπάρχουσα global μεταβλητή με το ίδιο όνομα.
Επίσης, οι παγκόσμιες μεταβλητές είναι χρήσιμες, σε αντίθεση με κάποιους φανατικούς της OOP που ισχυρίζονται το αντίθετο - ειδικά για μικρότερα σενάρια, όπου η OOP είναι υπερβολική.