В Python променливите играят ключова роля за съхранението и управлението на данни. Поведението и достъпността им зависят от това къде са дефинирани в програмата. В тази статия ще изследваме глобалните и локалните променливи как работят и общи сценарии с примери.
Локални променливи
Локалните променливи се създават във функция и съществуват само по време на изпълнението му. Те не могат да бъдат достъпни извън функцията.
низ.подниз java
Пример 1: В този код ние създаваме и осъществяваме достъп до локална променлива във функция.
Pythondef 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 е локална променлива вътре поздрав () и може да бъде достъпен само там. Отпечатването му навън причинява грешка, защото тя не съществува в световен мащаб.
Глобални променливи
Глобалните променливи се декларират извън всички функции и могат да бъдат достъпни навсякъде в програмата, включително вътрешни функции.
В този пример ние създаваме глобална променлива и след това достъп до нея както вътре, така и отвън на функция.
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!
Обяснение: MSG е глобална променлива, достъпна както вътре, така и отвън display () функция. Обаждане display () отпечатва глобалния MSG и печат MSG Извън функцията работи както се очаква.
Забележка: Ако променлива не се намери във функция (локален обхват) Python автоматично го търси в глобален обхват. Ако обаче локалната променлива има същото име като глобална, тя ще засенчи глобалната променлива вътре в тази функция.
Използване на локални и глобални променливи
Ако една променлива е дефинирана както в световен мащаб, така и локално с едно и също име, локалната променлива засенчва глобалната променлива във функцията. Промените в локалната променлива не засягат глобалната променлива, освен ако не декларирате изрично променливата за глобална.
Pythondef fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s)
Изход
Me too. I love Geeksforgeeks
Обяснение: Вътре забавно () s е локална променлива, зададена на „и аз“. и отпечатва тази стойност. Извън глобалния s остава „обичам Geeksforgeeks“, така че печатането s След това показва глобалната стойност.
Промяна на глобалните променливи във функция
По подразбиране не може да се промени глобална променлива във функция, без да я декларира за глобална. Ако опитате Python, ще повдигне грешка, защото третира променлива като локална. За да промените глобална променлива, използвайте Глобална ключова дума .
Без глобален (причинява грешка)
Pythondef fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun()
Изход
UnboundLocalError: Локална променлива, посочена преди присвояване
Обяснение: Вътрешно забавление () python предполага, че S е локален, тъй като се опитваме да го модифицираме. Но не съществува локален S преди този ред, така че възникне грешка.
С Global (работи правилно)
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
Обяснение:
- Декларирайки S като Global казва на Python да използва променливата от глобалния обхват.
- Функцията първо добавя „GFG“ след това преназначава s.
- Промените продължават да съществуват извън функцията.
Global vs Local със същото име
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
Обяснение:
- f () отпечатва глобален А, без да го променя.
- G () създава местен, оставящ глобален недокоснат.
- h () декларира A AS Global и го променя.
Локална променлива срещу глобална променлива
| Основа на сравнение | Глобална променлива | Локална променлива |
|---|---|---|
| Определение | Деклариран извън функциите | Деклариран във функции |
| Живот | Създаден, когато програмата стартира и унищожава, когато приключи | Създаден, когато функцията се извиква и унищожава, когато се върне |
| Споделяне на данни | Споделено във всички функции | Не се споделя; съществува само в рамките на неговата функция |
| Обхват | Може да се получи достъп до навсякъде в програмата | Достъпно само във функцията |
| Необходими са параметри | Не е необходимо преминаване на параметри | Може да бъде създаден чрез параметри или задачи вътре в функцията |
| Съхранение | Управлявано в глобалното пространство на имена (не е фиксирано местоположение на паметта) | Съхранява се в локалното пространство на имената на функцията (рамка на стека) |
| Стойност | Промените влияят на цялата програма | Промените са локални и не засягат други функции |