У цьому посібнику ви дізнаєтесь про глобальні змінні Python, локальні змінні, нелокальні змінні та де їх використовувати.
Відео: Локальна та глобальна змінні Python
Глобальні змінні
У Python змінна, оголошена поза функцією або в глобальній області, відома як глобальна змінна. Це означає, що глобальна змінна може бути доступна всередині або поза функцією.
Подивимось приклад того, як у Python створюється глобальна змінна.
Приклад 1: Створіть глобальну змінну
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Вихідні дані
x усередині: глобальний x зовні: глобальний
У наведеному вище коді ми створили x як глобальну змінну та визначили a foo()
для друку глобальної змінної x. Нарешті, ми називаємо те, foo()
яке виведе значення x.
Що робити, якщо ви хочете змінити значення x всередині функції?
x = "global" def foo(): x = x * 2 print(x) foo()
Вихідні дані
UnboundLocalError: посилання на локальну змінну 'x' перед призначенням
Вихідні дані відображають помилку, оскільки Python обробляє x як локальну змінну, і x також не визначено всередині foo()
.
Щоб це працювало, ми використовуємо global
ключове слово. Відвідайте Python Global Keyword, щоб дізнатися більше.
Місцеві змінні
Змінна, оголошена всередині тіла функції або в локальній області, відома як локальна змінна.
Приклад 2: Доступ до локальної змінної поза сферою дії
def foo(): y = "local" foo() print(y)
Вихідні дані
NameError: ім'я 'y' не визначено
Результат показує помилку, оскільки ми намагаємось отримати доступ до локальної змінної y у глобальній області, тоді як локальна змінна працює лише всередині foo()
або локальної області.
Давайте подивимось приклад того, як у Python створюється локальна змінна.
Приклад 3: Створіть локальну змінну
Зазвичай ми оголошуємо змінну всередині функції для створення локальної змінної.
def foo(): y = "local" print(y) foo()
Вихідні дані
місцеві
Давайте подивимось на попередню проблему, коли x був глобальною змінною, і ми хотіли змінити x всередині foo()
.
Глобальні та локальні змінні
Тут ми покажемо, як використовувати глобальні змінні та локальні змінні в одному і тому ж коді.
Приклад 4: Використання глобальних та локальних змінних в одному і тому ж коді
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Вихідні дані
глобальний глобальний локальний
У наведеному вище коді ми оголошуємо x як глобальну, а y як локальну змінну в foo()
. Потім ми використовуємо оператор множення *
для модифікації глобальної змінної x і друкуємо як x, так і y.
Після виклику foo()
значення x стає, global global
тому що ми використовували x * 2
для друку два рази global
. Після цього ми виводимо значення локальної змінної y, тобто local
.
Приклад 5: Глобальна змінна та Місцева змінна з однаковим іменем
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Вихідні дані
локальний x: 10 глобальний x: 5
У наведеному вище коді ми використовували одне і те ж ім'я x як для глобальної змінної, так і для локальної змінної. Ми отримуємо різний результат, коли друкуємо одну і ту ж змінну, оскільки змінна оголошена в обох областях, тобто локальна область всередині foo()
та глобальна область зовні foo()
.
Коли ми друкуємо змінну всередині, foo()
вона виводить local x: 10
. Це називається локальною сферою дії змінної.
Подібним чином, коли ми друкуємо змінну поза foo()
, вона видає глобальний x: 5. Це називається глобальним обсягом змінної.
Нелокальні змінні
Нелокальні змінні використовуються у вкладених функціях, локальний обсяг яких не визначений. Це означає, що змінна не може бути ні в локальному, ні в глобальному масштабі.
Подивимось приклад того, як нелокальна змінна використовується в Python.
Ми використовуємо nonlocal
ключові слова для створення нелокальних змінних.
Приклад 6: Створіть нелокальну змінну
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Вихідні дані
внутрішній: нелокальний зовнішній: нелокальний
У наведеному вище коді є вкладена inner()
функція. Ми використовуємо nonlocal
ключові слова для створення нелокальної змінної. inner()
Функція визначається в рамках іншої функції outer()
.
Примітка : Якщо ми змінимо значення нелокальної змінної, зміни з’являться в локальній змінній.