logo

Глобалне и локалне променљиве у Питону

У питхон варијабле играју кључну улогу у складиштењу и управљању подацима. Њихово понашање и приступачност зависе од тога где су дефинисани у програму. У овом чланку ћемо истражити глобалне и локалне променљиве како раде и уобичајени сценарији са примерима.

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

Локалне променљиве се креирају унутар функције и постоје само током његовог извршења. Не могу се приступити изван функције.

сдлц

Пример 1: У овом кодеку креирамо и приступамо локалној променљивој унутар функције.



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

Излаз
Hello from inside the function! 

Објашњење: Ми дефинишемо поздрав () са локалном променљивом мсг и одштампај га. Пошто мсг постоји само током извршења функције, приступ се приступа у оквиру функције. Звати поздрав () Приказује поруку.

Пример 2 : У овом примеру креирамо локалну променљиву унутар функције, а затим покушавајући да му приступите изван функције која узрокује грешку.

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

Излаз

Трацебацк (последњи последњи позив):
Датотека '/хоме/гуест/сандбок/солутион.пи' лине 6 ин
Штампај ('Спољна функција:' МСГ)
Намерор: Име 'мсг' није дефинисан

Објашњење: мсг је локална променљива изнутра поздрав () и могу се приступити само тамо. Штампање напољу изазива грешку јер то не постоји глобално.

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

Глобалне променљиве проглашене су ван свих функција и могу се приступити било где у програму, укључујући унутар функције.

У овом примеру креирамо глобалну променљиву, а затим је приступити и изнутра и изван функције.

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! 

Објашњење: мсг је глобална променљива доступна и унутар и изван њега Екран () Функција. Звати Екран () штампа глобално мсг и штампање мсг изван функције ради како се очекује.

Напомена: Ако се променљива не налази у функцији (локални опсег) Питхон аутоматски тражи га у глобалном обиму. Међутим, ако локална променљива има исто име као и глобално, она ће се сјенити глобалну променљиву унутар те функције.

Употреба локалних и глобалних променљивих

Ако се променљива дефинише и глобално и локално са истим именом локалне променљиве сенке Глобална променљива унутар функције. Промјене локалне променљиве не утичу на глобалну променљиву, осим ако не изричито прогласите променљиву као Глобал.

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

Излаз
Me too. I love Geeksforgeeks 

Објашњење: Изнутра Забава () с Да ли је локална променљива постављена и на мене. ' и штампа ту вредност. Изван глобалног с остаје "волим Геексфоргеекс" тако штампање с Након тога показује глобалну вредност.

Измена глобалних променљивих унутар функције

Подразумевано се не може модификовати глобалну променљиву унутар функције без проглашења као Глобал. Ако покушате да Питхон постави грешку јер третира варијаблу као локални. Да бисте модификовали глобалну променљиву употребу Глобална кључна реч .

Без глобалне (узрокује грешку)

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

Излаз

УнбоунОнКлоЦалерор: Локална променљива 'с' референцирана пре задатка

Објашњење: Унутрашња забава () Питхон претпоставља да је локална јер покушавамо да је модификујемо. Али ниједан локал не постоји пре тог линије, тако да се догоди грешка.

Са глобалним (исправно ради)

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 

Објашњење:

  • Проглашавање као Глобал говори Питхон да користи променљиву из глобалног обима.
  • Функција прво додаје "ГФГ", а затим доделите с.
  • Промјене постоје изван функције.

Глобал ВС Локално са истом именом

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 

Објашњење:

  • ф () штампа глобално а без промене.
  • г () ствара локално одлазеће глобално одлазећи.
  • х () проглашава се глобалним и модификује га.

Локална променљива ВС Глобална променљива

У поређењу Глобална променљива Локална променљива
ДефиницијаПроглашен изван функцијаПроглашени унутар функција
Животни векКреирано када програм започне и уништава када се завршиКреирано када се функција назива и уништи када се враћа
Дељење податакаПодељено на свим функцијамаНије дељено; постоји само у оквиру своје функције
ОбимМоже се приступити било где у програмуДоступно само унутар функције
Потребни параметриНије потребан пролазак параметараМоже се креирати путем параметара или задатака унутар функције
СкладиштењеУправљано у глобалном простору за именовање (није фиксна меморијска локација)Чува се у локалном простору функције (оквир за стацк)
ВредностПромјене утичу на цео програмПромјене су локалне и не утичу на друге функције