logo

Глобални и локални променливи в Python

В Python променливите играят ключова роля за съхранението и управлението на данни. Поведението и достъпността им зависят от това къде са дефинирани в програмата. В тази статия ще изследваме глобалните и локалните променливи как работят и общи сценарии с примери.

Локални променливи

Локалните променливи се създават във функция и съществуват само по време на изпълнението му. Те не могат да бъдат достъпни извън функцията.



низ.подниз java

Пример 1: В този код ние създаваме и осъществяваме достъп до локална променлива във функция.

Python
def greet(): msg = 'Hello from inside the function!' print(msg) greet() 

Изход
Hello from inside the function! 

Обяснение: Определяме поздрав () с локална променлива MSG и го отпечатайте. Тъй като MSG съществува само по време на изпълнението на функцията, той е достъпен в рамките на функцията. Обаждане поздрав () Показва съобщението.

Пример 2 : В този пример ние създаваме локална променлива във функция и след това се опитваме да имаме достъп до нея извън функцията, която причинява грешка.



Python
def greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg) 

Изход

Traceback (последно повикване последно):
Файл '/home/guest/sandbox/solution.py' ред 6 в
Печат ('Външна функция:' MSG)
NameError: Името „msg“ не е дефинирано

Обяснение: MSG е локална променлива вътре поздрав () и може да бъде достъпен само там. Отпечатването му навън причинява грешка, защото тя не съществува в световен мащаб.



Глобални променливи

Глобалните променливи се декларират извън всички функции и могат да бъдат достъпни навсякъде в програмата, включително вътрешни функции.

В този пример ние създаваме глобална променлива и след това достъп до нея както вътре, така и отвън на функция.

Python
msg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg) 

Изход
Inside function: Python is awesome! Outside function: Python is awesome! 

Обяснение: MSG е глобална променлива, достъпна както вътре, така и отвън display () функция. Обаждане display () отпечатва глобалния MSG и печат MSG Извън функцията работи както се очаква.

Забележка: Ако променлива не се намери във функция (локален обхват) Python автоматично го търси в глобален обхват. Ако обаче локалната променлива има същото име като глобална, тя ще засенчи глобалната променлива вътре в тази функция.

Използване на локални и глобални променливи

Ако една променлива е дефинирана както в световен мащаб, така и локално с едно и също име, локалната променлива засенчва глобалната променлива във функцията. Промените в локалната променлива не засягат глобалната променлива, освен ако не декларирате изрично променливата за глобална.

Python
def fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s) 

Изход
Me too. I love Geeksforgeeks 

Обяснение: Вътре забавно () s е локална променлива, зададена на „и аз“. и отпечатва тази стойност. Извън глобалния s остава „обичам Geeksforgeeks“, така че печатането s След това показва глобалната стойност.

Промяна на глобалните променливи във функция

По подразбиране не може да се промени глобална променлива във функция, без да я декларира за глобална. Ако опитате Python, ще повдигне грешка, защото третира променлива като локална. За да промените глобална променлива, използвайте Глобална ключова дума .

Без глобален (причинява грешка)

Python
def fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun() 

Изход

UnboundLocalError: Локална променлива, посочена преди присвояване

Обяснение: Вътрешно забавление () python предполага, че S е локален, тъй като се опитваме да го модифицираме. Но не съществува локален S преди този ред, така че възникне грешка.

С Global (работи правилно)

Python
s = '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) 

Изход
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section 

Обяснение:

  • Декларирайки S като Global казва на Python да използва променливата от глобалния обхват.
  • Функцията първо добавя „GFG“ след това преназначава s.
  • Промените продължават да съществуват извън функцията.

Global vs Local със същото име

Python
a = 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) 

Изход
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3 

Обяснение:

  • f () отпечатва глобален А, без да го променя.
  • G () създава местен, оставящ глобален недокоснат.
  • h () декларира A AS Global и го променя.

Локална променлива срещу глобална променлива

Основа на сравнение Глобална променлива Локална променлива
ОпределениеДеклариран извън функциитеДеклариран във функции
ЖивотСъздаден, когато програмата стартира и унищожава, когато приключиСъздаден, когато функцията се извиква и унищожава, когато се върне
Споделяне на данниСподелено във всички функцииНе се споделя; съществува само в рамките на неговата функция
ОбхватМоже да се получи достъп до навсякъде в програматаДостъпно само във функцията
Необходими са параметриНе е необходимо преминаване на параметриМоже да бъде създаден чрез параметри или задачи вътре в функцията
СъхранениеУправлявано в глобалното пространство на имена (не е фиксирано местоположение на паметта)Съхранява се в локалното пространство на имената на функцията (рамка на стека)
СтойностПромените влияят на цялата програмаПромените са локални и не засягат други функции