Приведите пожалуйста мне метафору и аналогию, что такое global и nonlocal функции

Я новичок в программировании и изучении языка python, и никак не могу усвоить, что такое функции и как их юзать, объясните пожалуйста понятным языком, желательно с приведением метафор и аналогий , заранее всем спасибо


Ответы (1 шт):

Автор решения: nomnoms12

Всё в Python — это объект. И у каждого объекта есть имя.

Но в одной программе может быть несколько одинаковых имён, причём не конфликтующих. Достигается это благодаря областям видимости.

Пример:

# Глобальная область видимости
# Коробка на улице
box = 0  

# Мой дом — отдельная область видимости
def my_house():
    # Локальная область видимости функции my_house
    # Нелокальная область видимости функции closet
    # Коробка в прихожей моего дома
    box = 1

    # Шкаф в моём доме — отдельная область видимости
    def closet():
        # Локальная область видимости функции closet
        # Коробка в шкафу в моём доме
        box = 2

В программе выше есть три переменные box, поэтому инструкция print(box) будет выводить разные значения в зависимости от того, где её выполнять.

С помощью ключевых слов global и nonlocal мы можем обратиться к конкретной переменной: глобальной (box = 0) или нелокальной (на область видимости выше, но не в глобальную).

В моём примере обращаться к нелокальной переменной box = 1 можно только из функции closet.

→ Ссылка