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

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

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

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

Пример 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 и го променя.

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

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