У змінних Python відіграють ключову роль у зберіганні та управлінні даними. Їх поведінка та доступність залежать від того, де вони визначені в програмі. У цій статті ми вивчимо глобальні та локальні змінні, як вони працюють та загальні сценарії з прикладами.
Місцеві змінні
Місцеві змінні створюються всередині функції і існують лише під час її виконання. До них неможливо отримати доступ з -за меж функції.
фільми123 до
Приклад 1: У цьому коді ми створюємо та отримуємо доступ до локальної змінної всередині функції.
Pythondef 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 є локальною змінною всередині привіт () і можна отримати лише там. Друк поза ним викликає помилку, оскільки вона не існує в усьому світі.
Глобальні змінні
Глобальні змінні оголошені поза межами всіх функцій і можуть бути доступні в будь -якій точці програми, включаючи внутрішні функції.
У цьому прикладі ми створюємо глобальну змінну, а потім отримуємо доступ до неї як всередині, так і поза функцією.
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 () друкує глобальний Месг і друк Месг Поза функцією працює, як очікувалося.
Примітка: Якщо змінна не знайдена всередині функції (локальна сфера) Python автоматично шукає її в глобальному обсязі. Однак якщо локальна змінна має однакову назву, як глобальна, вона буде затінювати глобальну змінну всередині цієї функції.
Використання локальних та глобальних змінних
Якщо змінна визначається як глобально, так і локально з однаковою назвою, локальна змінна тінить глобальну змінну всередині функції. Зміни в локальній змінній не впливають на глобальну змінну, якщо ви явно оголошуєте змінну як глобальну.
Pythondef fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s)
Випуск
Me too. I love Geeksforgeeks
Пояснення: Всередині Весело () s - це локальна змінна, яка також "мене". і друкує це значення. Поза глобальним s залишається "я люблю гексортики", так що друк s Згодом показує глобальну цінність.
Модифікація глобальних змінних всередині функції
За замовчуванням не можна змінити глобальну змінну всередині функції, не оголошуючи її як глобальну. Якщо ви спробуєте Python підніме помилку, оскільки він трактує змінну як локальну. Для зміни глобальної змінної Використовуйте Глобальне ключове слово .
Без глобального (викликає помилку)
Pythondef fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun()
Випуск
Unkenlocalerror: Local змінна посилається перед призначенням
Пояснення: Всередині Fun () Python вважає, що S є місцевим, оскільки ми намагаємось його змінити. Але до цього рядка не існує локального S, тому помилка виникає.
З глобальним (працює правильно)
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.
- Зміни зберігаються поза функцією.
Глобальний проти місцевого з однойменною
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 () друкує глобальний a, не змінюючи його.
- g () створює місцевий глобальний, що залишає глобальний.
- H () заявляє A як глобальний і змінює його.
Локальна змінна проти глобальної змінної
| Порівняльна основа | Глобальна змінна | Локальна змінна |
|---|---|---|
| Визначення | Оголошено поза функціями | Оголошено всередині функцій |
| Життя | Створена, коли програма починається та знищується, коли закінчується | Створений, коли функція викликається та знищується, коли вона повертається |
| Обмін даними | Поділяються на всіх функціях | Не поділяються; існує лише в межах його функції |
| Обсяг | Можна отримати доступ у будь -якому місці програми | Доступний лише всередині функції |
| Потрібні параметри | Немає проходження параметрів | Може бути створений за допомогою параметрів або призначення всередині функції |
| Зберігання | Керується в глобальному просторі імен (не фіксовано розташування пам'яті) | Зберігається в локальному просторі імен функції (кадр стека) |
| Цінність | Зміни впливають на всю програму | Зміни є локальними і не впливають на інші функції |