V Pythonových proměnných hraje klíčovou roli při ukládání a správě dat. Jejich chování a dostupnost závisí na tom, kde jsou v programu definovány. V tomto článku prozkoumáme globální a místní proměnné, jak fungují a běžné scénáře s příklady.
Místní proměnné
Místní proměnné jsou vytvářeny uvnitř funkce a existují pouze během jejího provádění. Nelze k nim přistupovat mimo funkci.
řetězec.podřetězec java
Příklad 1: V tomto kódu vytváříme a přístup k místní proměnné uvnitř funkce.
Pythondef greet(): msg = 'Hello from inside the function!' print(msg) greet()
Výstup
Hello from inside the function!
Vysvětlení: Definujeme pozdravit() s místní proměnnou MSG a vytiskněte to. Protože MSG existuje pouze během provádění funkce, je přístupný v rámci funkce. Povolání pozdravit() Zobrazí zprávu.
Příklad 2 : V tomto příkladu vytváříme lokální proměnnou uvnitř funkce a poté se pokusíme o přístup k ní mimo funkci, která způsobuje chybu.
Python
def greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg)
Výstup
Traceback (poslední hovor poslední):
Soubor '/home/guest/sandbox/solution.py' řádek 6 v
tisk ('vnější funkce:' msg)
NameError: Název „MSG“ není definován
Vysvětlení: msg je uvnitř místní proměnná pozdravit() a je tam pouze přístup. Jeho tisk venku způsobuje chybu, protože neexistuje globálně.
Globální proměnné
Globální proměnné jsou deklarovány mimo všechny funkce a lze je přistupovat kdekoli v programu, včetně vnitřních funkcí.
V tomto příkladu vytváříme globální proměnnou a poté k ní přistupujeme uvnitř i vně funkce.
Pythonmsg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg)
Výstup
Inside function: Python is awesome! Outside function: Python is awesome!
Vysvětlení: msg je globální proměnná přístupná uvnitř i vně zobrazit() funkce. Povolání zobrazit() tiskne globální MSG a tisk MSG Mimo funkci funguje podle očekávání.
Poznámka: Pokud není proměnná nalezena uvnitř funkce (lokální rozsah), Python ji automaticky hledá v globálním rozsahu. Pokud však má místní proměnná stejný název jako globální, bude uvnitř této funkce stínit globální proměnnou.
Použití místních a globálních proměnných
Pokud je proměnná definována globálně i lokálně se stejným názvem, lokální proměnná stíny globální proměnné uvnitř funkce. Změny v místní proměnné neovlivňují globální proměnnou, pokud výslovně prohlásíte proměnnou za globální.
Pythondef fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s)
Výstup
Me too. I love Geeksforgeeks
Vysvětlení: Uvnitř zábava() s je místní proměnná nastavena na „já také“. a vytiskne tuto hodnotu. Mimo globální s zůstává „Miluji geeksforgeeks“, takže tisk s Poté ukazuje globální hodnotu.
Úpravy globálních proměnných uvnitř funkce
Ve výchozím nastavení nelze upravit globální proměnnou uvnitř funkce, aniž by ji prohlásil za globální. Pokud zkusíte Python, vyvolá chybu, protože považuje proměnnou za místní. K úpravě globální proměnné použijte Globální klíčové slovo .
Bez globálního (způsobuje chybu)
Pythondef fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun()
Výstup
UnoundLoCalerror: místní proměnná 's' s odkazem před přiřazením
Vysvětlení: Inside Fun () Python předpokládá, že S je místní, protože se snažíme upravit. Před tímto řádkem však neexistuje žádná místní S, takže dojde k chybě.
S globálním (správně funguje)
Pythons = 'Python is great!' def fun(): global s s += ' GFG' # Modify global variable print(s) s = 'Look for GeeksforGeeks Python Section' # Reassign global print(s) fun() print(s)
Výstup
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section
Vysvětlení:
- Prohlášení S jako Global říká Pythonovi, aby použila proměnnou z globálního rozsahu.
- Funkce nejprve připojí „GFG“ a poté přiřadí S.
- Změny přetrvávají mimo funkci.
Global vs Local se stejným názvem
Pythona = 1 # Global variable def f(): print('f():' a) # Uses global a def g(): a = 2 # Local shadows global print('g():' a) def h(): global a a = 3 # Modifies global a print('h():' a) print('global:' a) f() print('global:' a) g() print('global:' a) h() print('global:' a)
Výstup
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3
Vysvětlení:
- f () tiskne globální a bez jeho změny.
- g () vytváří místní a opouštějící globální one nedotčený.
- h () prohlašuje A jako globální a modifikuje jej.
Lokální proměnná vs. Globální proměnná
| Srovnávací základ | Globální proměnná | Místní proměnná |
|---|---|---|
| Definice | Deklarováno mimo funkce | Deklarováno uvnitř funkcí |
| Život | Vytvořeno, když program začne a zničen, až skončí | Vytvořeno, když je funkce volána a zničena, když se vrátí |
| Sdílení dat | Sdílené napříč všemi funkcemi | Ne sdíleno; existuje pouze v rámci své funkce |
| Rozsah | Je přístupný kdekoli v programu | Přístupné pouze uvnitř funkce |
| Potřebné parametry | Nepotřeboval žádné předávání parametrů | Může být vytvořeno prostřednictvím parametrů nebo přiřazení uvnitř funkce |
| Skladování | Spravováno v globálním oboru oboru (ne pevnou paměť) | Uloženo v místním názvu funkce (rám zásobníku) |
| Hodnota | Změny ovlivňují celý program | Změny jsou místní a neovlivňují jiné funkce |