У питхон варијабле играју кључну улогу у складиштењу и управљању подацима. Њихово понашање и приступачност зависе од тога где су дефинисани у програму. У овом чланку ћемо истражити глобалне и локалне променљиве како раде и уобичајени сценарији са примерима.
Локалне променљиве
Локалне променљиве се креирају унутар функције и постоје само током његовог извршења. Не могу се приступити изван функције.
сдлц
Пример 1: У овом кодеку креирамо и приступамо локалној променљивој унутар функције.
Python
def greet(): msg = 'Hello from inside the function!' print(msg) greet()
Излаз
Hello from inside the function!
Објашњење: Ми дефинишемо поздрав () са локалном променљивом мсг и одштампај га. Пошто мсг постоји само током извршења функције, приступ се приступа у оквиру функције. Звати поздрав () Приказује поруку.
Пример 2 : У овом примеру креирамо локалну променљиву унутар функције, а затим покушавајући да му приступите изван функције која узрокује грешку.
Pythondef greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg)
Излаз
Трацебацк (последњи последњи позив):
Датотека '/хоме/гуест/сандбок/солутион.пи' лине 6 ин
Штампај ('Спољна функција:' МСГ)
Намерор: Име 'мсг' није дефинисан
Објашњење: мсг је локална променљива изнутра поздрав () и могу се приступити само тамо. Штампање напољу изазива грешку јер то не постоји глобално.
Глобалне променљиве
Глобалне променљиве проглашене су ван свих функција и могу се приступити било где у програму, укључујући унутар функције.
У овом примеру креирамо глобалну променљиву, а затим је приступити и изнутра и изван функције.
Pythonmsg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg)
Излаз
Inside function: Python is awesome! Outside function: Python is awesome!
Објашњење: мсг је глобална променљива доступна и унутар и изван њега Екран () Функција. Звати Екран () штампа глобално мсг и штампање мсг изван функције ради како се очекује.
Напомена: Ако се променљива не налази у функцији (локални опсег) Питхон аутоматски тражи га у глобалном обиму. Међутим, ако локална променљива има исто име као и глобално, она ће се сјенити глобалну променљиву унутар те функције.
Употреба локалних и глобалних променљивих
Ако се променљива дефинише и глобално и локално са истим именом локалне променљиве сенке Глобална променљива унутар функције. Промјене локалне променљиве не утичу на глобалну променљиву, осим ако не изричито прогласите променљиву као Глобал.
Pythondef fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s)
Излаз
Me too. I love Geeksforgeeks
Објашњење: Изнутра Забава () с Да ли је локална променљива постављена и на мене. ' и штампа ту вредност. Изван глобалног с остаје "волим Геексфоргеекс" тако штампање с Након тога показује глобалну вредност.
Измена глобалних променљивих унутар функције
Подразумевано се не може модификовати глобалну променљиву унутар функције без проглашења као Глобал. Ако покушате да Питхон постави грешку јер третира варијаблу као локални. Да бисте модификовали глобалну променљиву употребу Глобална кључна реч .
Без глобалне (узрокује грешку)
Pythondef fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun()
Излаз
УнбоунОнКлоЦалерор: Локална променљива 'с' референцирана пре задатка
Објашњење: Унутрашња забава () Питхон претпоставља да је локална јер покушавамо да је модификујемо. Али ниједан локал не постоји пре тог линије, тако да се догоди грешка.
Са глобалним (исправно ради)
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)
Излаз
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section
Објашњење:
- Проглашавање као Глобал говори Питхон да користи променљиву из глобалног обима.
- Функција прво додаје "ГФГ", а затим доделите с.
- Промјене постоје изван функције.
Глобал ВС Локално са истом именом
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)
Излаз
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3
Објашњење:
- ф () штампа глобално а без промене.
- г () ствара локално одлазеће глобално одлазећи.
- х () проглашава се глобалним и модификује га.
Локална променљива ВС Глобална променљива
| У поређењу | Глобална променљива | Локална променљива |
|---|---|---|
| Дефиниција | Проглашен изван функција | Проглашени унутар функција |
| Животни век | Креирано када програм започне и уништава када се заврши | Креирано када се функција назива и уништи када се враћа |
| Дељење података | Подељено на свим функцијама | Није дељено; постоји само у оквиру своје функције |
| Обим | Може се приступити било где у програму | Доступно само унутар функције |
| Потребни параметри | Није потребан пролазак параметара | Може се креирати путем параметара или задатака унутар функције |
| Складиштење | Управљано у глобалном простору за именовање (није фиксна меморијска локација) | Чува се у локалном простору функције (оквир за стацк) |
| Вредност | Промјене утичу на цео програм | Промјене су локалне и не утичу на друге функције |