logo

Глобальні та локальні змінні в Python

У змінних Python відіграють ключову роль у зберіганні та управлінні даними. Їх поведінка та доступність залежать від того, де вони визначені в програмі. У цій статті ми вивчимо глобальні та локальні змінні, як вони працюють та загальні сценарії з прикладами.

Місцеві змінні

Місцеві змінні створюються всередині функції і існують лише під час її виконання. До них неможливо отримати доступ з -за меж функції.



фільми123 до

Приклад 1: У цьому коді ми створюємо та отримуємо доступ до локальної змінної всередині функції.

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

Випуск
Hello from inside the function! 

Пояснення: Ми визначаємо привіт () з локальною змінною Месг і надрукувати його. Оскільки MSG існує лише під час виконання функції, до нього доступ до функції. Покликання привіт () Відображає повідомлення.

Приклад 2 : У цьому прикладі ми створюємо локальну змінну всередині функції, а потім намагаємося отримати доступ до неї поза функцією, яка викликає помилку.



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

Випуск

Traceback (останній дзвінок останній дзвінок):
Файл '/home/guest/sandbox/solution.py' рядок 6 в
PRINT ('Зовнішня функція:' 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 () друкує глобальний Месг і друк Месг Поза функцією працює, як очікувалося.

Примітка: Якщо змінна не знайдена всередині функції (локальна сфера) Python автоматично шукає її в глобальному обсязі. Однак якщо локальна змінна має однакову назву, як глобальна, вона буде затінювати глобальну змінну всередині цієї функції.

Використання локальних та глобальних змінних

Якщо змінна визначається як глобально, так і локально з однаковою назвою, локальна змінна тінить глобальну змінну всередині функції. Зміни в локальній змінній не впливають на глобальну змінну, якщо ви явно оголошуєте змінну як глобальну.

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

Випуск
Me too. I love Geeksforgeeks 

Пояснення: Всередині Весело () s - це локальна змінна, яка також "мене". і друкує це значення. Поза глобальним s залишається "я люблю гексортики", так що друк s Згодом показує глобальну цінність.

Модифікація глобальних змінних всередині функції

За замовчуванням не можна змінити глобальну змінну всередині функції, не оголошуючи її як глобальну. Якщо ви спробуєте Python підніме помилку, оскільки він трактує змінну як локальну. Для зміни глобальної змінної Використовуйте Глобальне ключове слово .

Без глобального (викликає помилку)

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

Випуск

Unkenlocalerror: Local змінна посилається перед призначенням

Пояснення: Всередині Fun () Python вважає, що S є місцевим, оскільки ми намагаємось його змінити. Але до цього рядка не існує локального S, тому помилка виникає.

З глобальним (працює правильно)

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.
  • Зміни зберігаються поза функцією.

Глобальний проти місцевого з однойменною

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 () друкує глобальний a, не змінюючи його.
  • g () створює місцевий глобальний, що залишає глобальний.
  • H () заявляє A як глобальний і змінює його.

Локальна змінна проти глобальної змінної

Порівняльна основа Глобальна змінна Локальна змінна
ВизначенняОголошено поза функціямиОголошено всередині функцій
ЖиттяСтворена, коли програма починається та знищується, коли закінчуєтьсяСтворений, коли функція викликається та знищується, коли вона повертається
Обмін данимиПоділяються на всіх функціяхНе поділяються; існує лише в межах його функції
ОбсягМожна отримати доступ у будь -якому місці програмиДоступний лише всередині функції
Потрібні параметриНемає проходження параметрівМоже бути створений за допомогою параметрів або призначення всередині функції
ЗберіганняКерується в глобальному просторі імен (не фіксовано розташування пам'яті)Зберігається в локальному просторі імен функції (кадр стека)
ЦінністьЗміни впливають на всю програмуЗміни є локальними і не впливають на інші функції