Вступ до сфери застосування в Python

Область застосування визначає доступність об’єкта python. Для доступу до певної змінної в коді необхідно визначити область, оскільки до неї не можна отримати доступ з будь-якого місця програми. Конкретна область кодування, де видні змінні, відома як область. Змінні не видно всьому коду, його видимість може бути обмежена. Область застосування підтверджує, яка змінна може бути "Seen". Область застосування визначає набір правил, які вказують нам, як і де можна шукати змінну. У змінній виконується пошук або для отримання значення, або для призначення значення. Простір імен - це унікальна ідентифікація змінної або методу. Простір імен повідомляє інтерпретатору python про назву об'єкта та місцезнаходження, звідки він намагається отримати доступ до нього.

У просторах імен шукається роздільна здатність області відповідно до правила LEGB. LEGB розшифровується як: L: Місцевий, E: закритий, G: глобальний, B: вбудований. Послідовність LEGB важлива. Спочатку шукають змінну в локальному, потім - вкладеному, потім глобальному і, нарешті, вбудованому.

Типи сфери застосування в Python

Давайте вивчимо, як оголосити змінну та як отримати доступ до її області:

1. Місцевий обсяг

Змінні, які визначені у функції, є локальною областю змінної. Ці змінні визначені в тілі функції. Давайте розберемося з цією концепцією за допомогою прикладу. У цьому прикладі 1 ми взяли одну змінну число. Num = 0 визначається поза функцією, тому це не є локальною змінною. Згідно з нашим визначенням, змінні, які оголошуються всередині тіла функції, є локальною змінною. Тут num = 1 - локальна змінна, яка оголошується та друкується всередині демонстрації функції. Якщо ми запустимо цей код, вихід подано нижче.

Приклад №1:

Код:

num=0
def demo():
#print(num)
num=1
print("The Number is:", num)
demo()

Вихід:

Число локальне для функції. Коли ми використовуємо значення змінної num у функції перед тим, як оголосити її локально, це призводить до помилки.

Приклад 2: Тут перший оператор друку викликає помилку python, коли ми намагаємося отримати доступ до нього перед призначенням.

Приклад №2:

Код:

num=0
def demo():
print(num) //Raises an Error
num=1
print("The Number is:", num)
demo()

Вихід:

2. Глобальний обсяг

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

У наступному прикладі 1 ми оголосили змінну Str, яка знаходиться поза функцією. Демо-функція викликається, і вона друкує значення змінної Str. Для використання глобальної змінної всередині функції немає необхідності використовувати глобальне ключове слово.

Приклад №1:

Код:

def demo():
print(Str)
# Global
Str = "You are clever"
demo()

Вихід:

У наступному прикладі 2 ми намагалися змінити значення глобальної змінної Str всередині функції, тому вона підняла виняток. Якщо ми змінимо або призначимо нове значення змінній всередині функції, тоді ми повинні написати глобальне. Якщо ви хочете сказати інтерпретатору python, що ви хочете використовувати глобальну змінну, тоді використовується ключове слово "global". Якщо вона не була оголошена глобальною, то python розглядає цю змінну як локальну, якщо вона створена або змінена всередині функції. У цьому першому рядку є виняток, оскільки python передбачає, що ми хочемо призначити як локальну змінну через присвоєння str всередині функції demo ().

Приклад №2:

Код:

def demo():
print(Str)
Str = "You are smart"
print(Str)
# Global scope
Str = "You are Clever"
demo()
print(Str)

Вихід:

Коли ми хочемо змінити значення глобальної змінної всередині функції використовується глобальне ключове слово.

Наступний Приклад 3 вирішив проблему, з якою стикається вище.

Приклад №3:

Код:

def demo():
global Str
print(Str)
Str = "You are smart"
print(Str)
# Global scope
Str = "You are Clever"
demo()
print(Str)

Вихід:

3. Область застосування, що не є локальною або закриває

Нелокальна змінна - це змінна, яка визначена вкладеною функцією. Це означає, що змінна не може бути ні в локальній, ні в глобальній області. Для створення нелокальної змінної використовується нелокальне ключове слово. У наступному коді ми створили зовнішню функцію і є вкладена функція Internal (). В області зовнішньої () функції визначається внутрішня () функція. Якщо ми змінимо нелокальну змінну, як вона визначена у внутрішній () функції, то зміни відображаються і у зовнішній функції.

Приклад №1:

Код:

def func_outer():
x = "local"
def func_inner():
nonlocal x
x = "nonlocal"
print("inner:", x)
func_inner()
print("outer:", x)
func_outer()

Вихід:

Якщо ми просто хочемо використовувати значення зовнішньої функції і не хочемо вносити жодних змін, тоді коментуємо (не місцевий а) рядок.

Приклад №2:

Код:

def func_outer():
a = "local"
def func_inner():
#nonlocal a
a = "nonlocal"
print("inner:", a)
func_inner()
print("outer:", a)
func_outer()

Вихід:

4. Вбудована область застосування

Якщо змінна не визначена в локальній, закритій чи глобальній області, тоді python шукає її у вбудованій області. У наступному прикладі імпортується 1 з математичного модуля pi, а значення pi не визначається у глобальному, локальному і додається. Потім Python шукає значення pi у вбудованій області та друкує це значення. Отже, ім'я, яке вже присутнє у вбудованій області, не повинно використовуватися як ідентифікатор.

Приклад №1:

Код:

# Built-in Scope
from math import pi
# pi = 'Not defined in global pi'
def func_outer():
# pi = 'Not defined in outer pi'
def inner():
# pi = 'not defined in inner pi'
print(pi)
inner()
func_outer()

Вихід:

Висновок - Сфера застосування в Python

У цій статті ми дізналися про область змінної python. Ми дізналися чотири типи сфери застосування - глобальна область, локальна область, вкладена область та вбудована область застосування. Ми також дізналися, коли використовувати глобальні та нелокальні ключові слова. Сподіваюся, ви зрозуміли цю концепцію.

Рекомендована стаття

Це посібник зі сфери застосування в Python. Тут ми обговорюємо типи сфери застосування в Python та його прикладів, а також реалізацію та вихід коду. Ви також можете ознайомитись з іншими нашими пов’язаними статтями, щоб дізнатися більше -

  1. Кортежі в Python з типами
  2. Огляд інкапсуляції в Python
  3. Альтернативи Python | Топ 6
  4. Вступ у спадщину в Python