Dzen.ru Video Downloader

The easiest way to download Dzen.ru video, music, thumbnail without watermark or logo

Python Russian

17 1 день назад

Что такое global и nonlocal. Легкий способ получить UnboundLocalError

TIP! Right-click and select "Save link as..." to download.

Loading...
Как обещал в прошлом видео - рассмотрим ключевые слова global и nonlocal

Особенности:
1) если мы пытаемся изменить какую-то переменную внутри функции, интерпретатор автоматически считает ее локальной, слова global/nonlocal нужны как информация интерпретатору, что переменная не локальна
2) оба ключевых слова НЕ нужны, если вам нужно только читать переменную, используйте их только для изменения
3) оба слова позволяют сразу перейти к поиску в нужном пространстве имен, nonlocal сразу переходит к поиску во внешних функциях (в который вложена текущая), global сразу переходит к поиску в глобальном пространстве имен. То есть nonlocal сразу идет в букву E, а global в букву G в аббревиатуре LEGB
4) global позволяет создать в глобальном пространстве имен переменную, которой там не было. Nonlocal работает только с уже существующими переменными
5) Nonlocal НЕ ищет в глобальном, а global во вложенных скоупах! Они не взаимозаменяемы
6) Есть редкие случаи, когда использование global оправдано, но в большинстве случаев и просто как хорошая практика - не стоит использовать global и nonlocal. Стоит отдавать предпочтение независимым, "чистым" функциям.

Почитать:
Learning Python, Fifth Edition by Mark Lutz, глава 17

https://docs.python.org/3/faq/programming.html#why-am-i-getting-an-unboundlocalerror-when-the-variable-has-a-value

https://docs.python.org/3/faq/programming.html#what-are-the-rules-for-local-and-global-variables-in-python

https://docs.python.org/3/reference/simple_stmts.html?highlight=global#the-global-statement

https://docs.python.org/3/reference/simple_stmts.html?highlight=global#the-nonlocal-statement


Присоединяйтесь к помощи каналу, будет интересно)
✔️Бусти https://boosty.to/python_russian/donate
✔️Юмани 410011506612886

Будь первым везде и всегда, включай уведомления о новых выпусках 🔔


Смотри там где удобно🤩
✔️ https://vk.com/python_russian
✔️ https://boosty.to/python_russian

✔️ https://www.youtube.com/c/PythonRussian
✔️ https://t.me/python_russian

✔️ https://dzen.ru/python_russian
✔️ https://rutube.ru/channel/24346352/

#Python #PythonRussian #global