Więcej
Używanie zmiennych globalnych w funkcji
Jak mogę utworzyć lub użyć zmiennej globalnej w funkcji?
Jeśli utworzę zmienną globalną w jednej funkcji, jak mogę użyć tej zmiennej globalnej w innej funkcji? Czy muszę przechowywać zmienną globalną w zmiennej lokalnej funkcji, która potrzebuje do niej dostępu?
2925
3
Możesz używać zmiennej globalnej w innych funkcjach, deklarując ją jako
global
w każdej funkcji, która ją przypisuje:Wyobrażam sobie, że powodem tego jest to, że ponieważ zmienne globalne są tak niebezpieczne, Python chce się upewnić, że naprawdę wiesz, że to jest to, z czym się bawisz, poprzez wyraźne wymaganie słowa kluczowego
global
.Zobacz inne odpowiedzi, jeśli chcesz udostępnić zmienną globalną w różnych modułach.
Możesz chcieć poznać pojęcie przestrzeni nazw. W Pythonie, moduł jest naturalnym miejscem dla globalnych danych:
Specyficzne użycie global-in-a-module jest opisane tutaj - Jak współdzielić zmienne globalne pomiędzy modułami?, i dla kompletności, zawartość jest udostępniona tutaj:
Jeśli chcesz się odwołać do zmiennej globalnej w funkcji, możesz użyć słowa kluczowego global, aby zadeklarować, które zmienne są globalne. Nie musisz go używać we wszystkich przypadkach (jak ktoś tutaj błędnie twierdzi) - jeśli nazwa, do której odwołuje się wyrażenie, nie może być znaleziona w zakresie lokalnym lub zakresach funkcji, w których ta funkcja jest zdefiniowana, jest ona szukana wśród zmiennych globalnych.
Jeśli jednak przypiszesz do nowej zmiennej, która nie jest zadeklarowana jako globalna w funkcji, jest ona domyślnie zadeklarowana jako lokalna i może przesłonić każdą istniejącą zmienną globalną o tej samej nazwie.
Poza tym, zmienne globalne są użyteczne, w przeciwieństwie do niektórych gorliwców OOP, którzy twierdzą inaczej - szczególnie dla mniejszych skryptów, gdzie OOP jest overkill.