Python Russian

Python Russian 

простым языком о прекрасном языке программирования

59subscribers

78posts

LEGB-rule. Как Python ищет имена переменных

Короткое видео о LEGB-rule, аббревиатуре, в которой отражен порядок поиска имени переменной или функции в python.
Особенности:
1) сначала поиск идет в локальном пространстве имен, максимально близко к использованию имени и далее идет снизу-вверх, изнутри-наружу к глобальному пространству имен
2) после локального пространства имен интерпретатор посмотрит в enclosing, то есть в функцию, которая содержит текущую (если она есть) и далее проверит глобальное пространство имен
3) последним шагом будут проверены имена в модуле builtins (встроенные функции)
4) если на любом этапе имя найдено, то далее поиск не идет. Если все этапы неудачны то выбрасывается NameError
5) важно понимать что даже если мы используем встроенную функцию, типа max/min/sum/print, то интерпретатор сначала проведет поиск по всем скоупам. Вот почему крайне важно НИКОГДА не давать своим переменным, функциям, модулям имена встроенных функций или библиотек (самые частые фейлы это имена типа len, list, sum, json, dict)
Подробно:
1) "Learning Python", Fifth Edition Chapter 17 by Mark Lutz
2) https://docs.python.org/3.7/reference/executionmodel.html#naming-and-binding
3) https://docs.python.org/3.7/tutorial/classes.html#python-scopes-and-namespaces
Subscription levels3

Большое спасибо

$2.59 per month
На поддержку канала и просто в знак благодарности

На новые идеи

$6.5 per month
Чтобы новые видео появлялись и для поддержки вдохновения

Show must go on...

$13 per month
На хорошее кофе и для металлу в голосе
Go up