Глобальні, локальні та нелокальні змінні Python (з прикладами)

У цьому посібнику ви дізнаєтесь про глобальні змінні 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().

Примітка : Якщо ми змінимо значення нелокальної змінної, зміни з’являться в локальній змінній.

Цікаві статті...