Globální proměnné Pythonu jsou ty, které nejsou definovány uvnitř žádné funkce a mají globální rozsah, zatímco Python lokální proměnné jsou ty, které jsou definovány uvnitř funkce a jejich rozsah je omezen pouze na tuto funkci. Jinými slovy, můžeme říci, že lokální proměnné jsou přístupné pouze uvnitř funkce, ve které byly inicializovány, zatímco globální proměnné jsou přístupné v celém programu a uvnitř každé funkce.
Místní proměnné Pythonu
Lokální proměnné v Pythonu jsou ty, které jsou inicializovány uvnitř funkce a patří pouze k této konkrétní funkci. Nelze k němu přistupovat nikde mimo funkci. Podívejme se, jak vytvořit lokální proměnnou.
Vytváření lokálních proměnných v Pythonu
Definování a přístup k lokálním proměnným
Python3
def> f():> > # local variable> > s> => 'I love Geeksforgeeks'> > print> (s)> # Driver code> f()> |
>
>Výstup
I love Geeksforgeeks>
Lze lokální proměnnou použít mimo funkci?
cloudové výpočetní aplikace
Pokud se pokusíme použít tuto lokální proměnnou mimo funkci, uvidíme, co se stane.
Python3
def> f():> > > # local variable> > s> => 'I love Geeksforgeeks'> > print> (> 'Inside Function:'> , s)> # Driver code> f()> print> (s)> |
>
>
Výstup:
NameError : name 's' is not defined>
Globální proměnné Pythonu
Jsou to ty, které jsou definovány mimo jakoukoli funkci a které jsou přístupné v celém programu, tj. uvnitř i vně každé funkce. Podívejme se, jak vytvořit globální proměnnou Pythonu.
Vytvořte globální proměnnou v Pythonu
Definování globálních proměnných Pythonu a přístup k nim.
Python3
# This function uses global variable s> def> f():> > print> (> 'Inside Function'> , s)> # Global scope> s> => 'I love Geeksforgeeks'> f()> print> (> 'Outside Function'> , s)> |
>
>Výstup
Inside Function I love Geeksforgeeks Outside Function I love Geeksforgeeks>
Proměnná s je definována jako globální proměnná a používá se uvnitř funkce i mimo ni.
Poznámka: Protože neexistují žádné místní, použije se hodnota z globálních, ale ujistěte se, že místní i globální proměnné by měly mít stejný název.
Proč v Pythonu používáme lokální a globální proměnné?
Co když teď existuje proměnná Pythonu se stejným názvem inicializovaná uvnitř funkce i globálně? Nyní vyvstává otázka, bude mít lokální proměnná nějaký vliv na globální proměnnou nebo naopak, a co se stane, když změníme hodnotu proměnné uvnitř funkce f()? Dotkne se to i globálů? Testujeme to v následujícím kódu:
Příklad
Pokud je v rozsahu funkce definována proměnná se stejným názvem, vypíše pouze hodnotu zadanou uvnitř funkce, nikoli globální hodnotu.
Python3
bash elf
# This function has a variable with> # name same as s.> def> f():> > s> => 'Me too.'> > print> (s)> # Global scope> s> => 'I love Geeksforgeeks'> f()> print> (s)> |
>
>Výstup
Me too. I love Geeksforgeeks>
Co když se nyní pokusíme změnit hodnotu globální proměnné uvnitř funkce? Podívejme se na to pomocí níže uvedeného příkladu.
Python3
# This function uses global variable s> def> f():> > s> +> => 'GFG'> > print> (> 'Inside Function'> , s)> # Global scope> s> => 'I love Geeksforgeeks'> f()> |
>
>
Výstup:
UnboundLocalError : local variable 's' referenced before assignment>
Aby výše uvedený program fungoval, musíme v Pythonu použít globální klíčové slovo. Podívejme se, co je toto globální klíčové slovo.
Globální klíčové slovo
Potřebujeme pouze použít globální klíčové slovo ve funkci, pokud chceme provést přiřazení nebo změnit globální proměnnou. globální není potřeba pro tisk a přístup. Python předpokládá, že chceme lokální proměnnou kvůli přiřazení k s uvnitř f(), takže první příkaz vyvolá chybovou zprávu. Jakákoli proměnná, která je změněna nebo vytvořena uvnitř funkce, je lokální, pokud nebyla deklarována jako globální proměnná. Abychom Pythonu řekli, že chceme použít globální proměnnou, musíme použít klíčové slovo globální , jak je vidět na následujícím příkladu:
Příklad 1: Použití globálního klíčového slova Pythonu
Python3
# This function modifies the global variable 's'> def> f():> > global> s> > s> +> => ' GFG'> > print> (s)> > s> => 'Look for Geeksforgeeks Python Section'> > print> (s)> # Global Scope> s> => 'Python is great!'> f()> print> (s)> |
>
>Výstup
Python is great! GFG Look for Geeksforgeeks Python Section Look for Geeksforgeeks Python Section>
Nyní není žádná dvojznačnost.
Příklad 2: Použití globálních a lokálních proměnných Pythonu
Python3
javascript window.open
a> => 1> # Uses global because there is no local 'a'> def> f():> > print> (> 'Inside f() : '> , a)> # Variable 'a' is redefined as a local> def> g():> > a> => 2> > print> (> 'Inside g() : '> , a)> # Uses global keyword to modify global 'a'> def> h():> > global> a> > a> => 3> > print> (> 'Inside h() : '> , a)> # Global scope> print> (> 'global : '> , a)> f()> print> (> 'global : '> , a)> g()> print> (> 'global : '> , a)> h()> print> (> 'global : '> , a)> |
>
>Výstup
global : 1 Inside f() : 1 global : 1 Inside g() : 2 global : 1 Inside h() : 3 global : 3>
Rozdíl b/w Místní proměnná vs. Globální proměnné
Srovnávací základ | Globální proměnná | Místní proměnná |
Definice | deklarován mimo funkce | deklarované v rámci funkcí |
Život | Jsou vytvořeny spuštěním provádění programu a jsou ztraceny, když je program ukončen | Jsou vytvořeny, když funkce zahájí své provádění, a jsou ztraceny, když funkce skončí |
Sdílení dat | Nabízí sdílení dat | Nenabízí sdílení dat |
Rozsah | Může být přístupný v celém kódu | Přístup je možný pouze uvnitř funkce |
Potřebné parametry | předávání parametrů není nutné | předávání parametrů je nutné |
Úložný prostor | Pevné umístění vybrané kompilátorem | Jsou uloženy na zásobníku |
Hodnota | Jakmile se hodnota změní, projeví se to v celém kódu | jednou změněná proměnná neovlivňuje ostatní funkce programu |