Автор оригинала: Shubham Sayon.
Введение в масштаб в Python
❖ Что такое зовут в Python?
Все в Python – это объект. Поскольку все является объектом, нам нужно определить и отличить каждый тип объекта друг от друга, и это то, что делает имя. Имя – это просто уникальное имя, данное объектам в Python, чтобы они могли быть идентифицированы. Например, когда функция определена в программе, дается имя, которое используется для идентификации функции. Другой пример – простое переменное назначение var
Отказ Здесь 2 Объект хранится в памяти во время var это имя, данное объекту.
❖ Что такое область?
Область применения названия, такого как переменная, функция, объект и т. Д., является регионом или частью программы, где имени можно получить напрямую. Другими словами, имя видно и доступно только в его объеме.
❖ Что такое пространство имен?
Пространство имен – это просто коллекция имен. Это контейнер, который содержит имена, сопоставленные на их соответствующие объекты. Просторы имен изолированы; Таким образом же имена в разных областях не сталкиваются.
🐍 пространство имен, которое содержит все встроенные имена, создается по умолчанию из-за того, какие встроенные функции, такие как Печать ()
Доступ к доступу от всех частей программы.
❖ Пример
name = "FINXTER" print("Name in Global Scope: ", name) def foo(): name = "PYTHON" print("Name in Local Scope: ", name) foo()
Выход:
Name in Global Scope: FINXTER Name in Local Scope: PYTHON
В приведенном выше примере мы можем видеть, что переменная находится в глобальном пространстве имен, а также внутри локального пространства имен и не сталкивается. Теперь, когда приводит нас к очень важному обсуждению переменных спецификаций и Legb ПРАВИЛЬНОЕ РЕШЕНИЕ РЕШЕНИЯ.
Правило легкого правила и вариабельные области
Legb Это аббревиатура для Местные (l) -Сложенные (E) -Global (G) -строение (B) И он используется для определения разрешения Python Scope. Давайте понять, что такое разрешение области и как работает legb.
Отказ от ответственности: Правила legb относятся к именам переменных и не атрибутов.
❖ локальный объем (л)
Когда переменное/имя создано внутри функции, она доступна только в объеме этой функции и перестает существовать при использовании вне функции. Таким образом, переменная принадлежит к Местный охват функции. Каждый раз, когда вызывается функция, создается новый локальный объем. Локальная область также называется Сфера функции Отказ
Пример:
def foo(): scope = "local variable" print(scope) foo()
Выход:
local variable
❖ ограждающий объем (E)
Примечающая область возникает при вложенных функциях. Когда переменная находится в объеме внешней функции, это означает, что переменная находится в ограждении функции. Следовательно, переменная видима в объеме внутренних и внешних функций. Заключающая область часто называется не местный сфера.
def foo(): scope = "enclosed variable" def func(): print(scope) func() foo()
Выход:
Закрытая переменная
В приведенном выше примере переменная Область
находится внутри ограждения функции foo ()
и доступен внутри foo ()
а также func ()
Функции.
❖ глобальный объем (г)
Глобальная переменная – это переменная, которую объявлена в Глобальный объем и может быть использован по всей программе; Это означает, что он может быть доступен внутри, а также за пределами объема функции. Глобальное имя обычно объявляет внешние функции, в основном корпусе кода Python. На бэкэнде Python преобразует основные сценарии программ в __main__ Модуль, который отвечает за выполнение основной программы. Пространство имен __main__
Модуль – это Глобальный объем.
Пример:
name = "FINXTER" def foo(): print("Name inside foo() is ", name) foo() print("Name outside foo() is :", name)
Выход:
Name inside foo() is FINXTER Name outside foo() is : FINXTER
❖ Встроенный объем (B)
Встроенный объем – это самый широкий объем, доступный в Python и содержит ключевые слова, функции, исключения и другие атрибуты, которые встроены в Python. Имена в встроенном объеме доступны по всей программе Python. Он загружен автоматически во время выполнения программы Python/Script.
Пример
x = 25 print(id(x))
Выход:
140170668681696
❖ Пример навесных правил в Python
x = 100 print("1. Global x:", x) class Test(object): y = x print("2. Enclosed y:", y) x = x + 1 print("3. Enclosed x:", x) def method(self): print("4. Enclosed self.x", self.x) print("5. Global x", x) try: print(y) except NameError as e: print("6.", e) def method_local_ref(self): try: print(x) except UnboundLocalError as e: print("7.", e) x = 200 # causing 7 because has same name print("8. Local x", x) inst = Test() inst.method() inst.method_local_ref()
Выход:
1. Global x: 100 2. Enclosed y: 100 3. Enclosed x: 101 4. Enclosed self.x 101 5. Global x 100 6. name 'y' is not defined 7. local variable 'x' referenced before assignment 8. Local x 200
Следующая диаграмма обеспечивает изобразительное представление правил Scopes в Python:
Понимание UnsoundLocalError в Python
Когда Переменная Присваивается в рамках функции, он обрабатывается как локальная переменная по умолчанию в Python. Если местный Переменная ссылается до того, как значение было назначено/связано с ним, UnsoundLocalError
Поднялся. В приведенном выше примере при переменной 'val'
Читается переводчиком Python внутри func ()
Функция, это предполагает, что 'val'
это локальная переменная. Тем не менее, он вскоре понимает, что локальная переменная ссылалась до того, как любое значение было назначено на него в рамках функции. Таким образом, это бросает UnsoundLocalError
Отказ
Другими словами, мы можем получить доступ к глобальной переменной внутри функции, но не может изменять его из функции (если вы не заставляете глобальное или нелокальное назначение, используя нелокальные ключевые слова
или ). Отказ
Пример:
val = 100 def func(): val = val + 100 print(val) func()
Выход:
Traceback (most recent call last): File "C:/Users/Shubham-PC/PycharmProjects/pythonProject1/main.py", line 9, infunc() File "C:/Users/Shubham-PC/PycharmProjects/pythonProject1/main.py", line 5, in func val = val + 100 UnboundLocalError: local variable 'val' referenced before assignment
Разрешение: Разрешить UnsoundLocalError
Когда локальная переменная переназначена после первого использования, вы можете либо использовать глобальный
Ключевое слово или нелокальный
ключевое слово. глобальный
Ключевое слово позволяет изменять значения глобальной переменной из локальной области функции, пока нелокальный
Ключевое слово обеспечивает аналогичную функциональность в случае вложенных функций.
Это приводит нас к очень важной теме – глобальный
и нелокальный
ключевые слова.
Глобальное и нелокальное ключевое слово в Python
❖ Глобальное ключевое слово
Мы уже читали о глобальном объеме, где мы узнали, что каждая переменная, которая объявлена в основном корпусе и внешней функции в коде Python, является глобальным по умолчанию. Однако, если у нас есть ситуация, когда нам нужно объявить глобальную переменную внутри функции, как в порядке выступления этой статьи, то Глобальное ключевое слово приходит к нашему спасению. Мы используем Глобальное ключевое слово
Внутри функции, чтобы сделать переменную Global в локальном объеме. Это означает, что глобальное ключевое слово позволяет нам модифицировать и использовать переменную за пределами объема функции, в пределах которой она была определена.
Теперь давайте посмотрим на следующую программу, чтобы понять использование глобальный
ключевое слово.
def foo(): global name name = "PYTHON!" print("Name inside foo() is ", name) foo() name = "FINXTER "+name print("Name outside foo() is ", name)
Выход:
Name inside foo() is PYTHON! Name outside foo() is FINXTER PYTHON!
❖ нелокальное ключевое слово
нелокальный
Ключевое слово полезно, когда у нас есть вложенная функция, то есть функции, имеющие переменные в прилагаемом объеме. Другими словами, если вы хотите изменить/изменить переменную, которая находится в объеме прилагающей функции (внешняя функция), вы можете использовать нелокальный
ключевое слово. Если мы изменим значение нелокальный
Переменная Значение Местный
Переменная также меняется.
Пример:
def foo(): a = 25 print("Value of 'a' before calling func = ",a) def func(): nonlocal a a=a+20 print("Value of 'a' inside func = ",a) func() print("Value of 'a' after exiting func = ",a) foo()
Выход :
Value of 'a' before calling func = 25 Value of 'a' inside func = 45 Value of 'a' after exiting func = 45
❖ глобальное ключевое слово против нелокального ключевого слова
Прежде чем заключать эту статью, давайте посмотрим на ключевые различия между глобальный
и нелокальный
Переменная/ключевые слова.
- В отличие от
глобальный
ключевое слово,нелокальный
Ключевое слово работает только в Python 3 и выше Отказ -
глобальный
Ключевое слово может использоваться с ранее существующими глобальными переменными или новыми переменными, тогда какнелокальный
Ключевое слово должно быть определено с ранее существующей переменной.
Заключение
В этой статье мы узнали следующее:
- Каковы имена в Python?
- Что такое пространства имен в Python?
- Что такое область в Python?
- Правило разрешения свалки Legb в Python.
- UndoundLocalError.
- Глобальное и нелокальное ключевое слово.
Пожалуйста, подпишитесь и оставайся настроенными для получения дополнительных статей!
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @: