Почему в Python переменные, определенные в составном операторе, не являются локальными для этого оператора?

Почему в Python переменные, определенные в составном операторе, не являются локальными для этого оператора?
Почему в Python переменные, определенные в составном операторе, не являются локальными для этого оператора? - afgprogrammer @ Unsplash

Большая часть деталей дизайна языка Python записана в документах PEP — этот, кажется, охватывает правила, касающиеся отношений между именами переменных и областью действия: https://peps.python.org/pep-0227/#rebinding-names-in -окружающие-прицелы

Существуют технические проблемы, которые затрудняют поддержку повторной привязки имен в объемлющих областях, но основная причина, по которой это не разрешено в текущем предложении, заключается в том, что против этого выступает Гвидо. Его мотивация: это трудно поддерживать, потому что для этого потребуется новый механизм, который позволил бы программисту указать, что присваивание в блоке должно перепривязывать имя в охватывающем блоке; предположительно ключевое слово или специальный синтаксис (x := 3) сделали бы это возможным. Учитывая, что это будет стимулировать использование локальных переменных для хранения состояния, которое лучше хранить в экземпляре класса, не стоит добавлять новый синтаксис, чтобы сделать это возможным (по мнению Гвидо).

Прикрепляю к посту несколько видео по теме:

Прикрепленное видео 1 - 43. Области видимости переменных. Ключевые слова global и nonlocal, Python для начинающих

Прикрепленное видео 2 - Уроки Python: Условный оператор if в Python. Операторы сравнения. Булевский тип данных. - 5

Прикрепленное видео 3 - C++ 2. Ссылки и константы, Классы и структуры, Инкапсуляция и доступ


LetsCodeIt, 18 января 2023 г., 03:37