Рубрики
Без рубрики

Правила Scoping Python – простое иллюстрированное руководство

Введение в прицел в Python ❖ Что такое имеется в Python? Все в Python – это объект. Поскольку все является объектом, нам нужно определить и отличить каждый тип объекта друг от друга, и это то, что делает имя. Имя – это просто уникальное имя, данное объектам в Python, так что … Python Scoping Rules – простое иллюстрированное руководство Подробнее »

Автор оригинала: 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, in 
    func()
  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

❖ глобальное ключевое слово против нелокального ключевого слова

Прежде чем заключать эту статью, давайте посмотрим на ключевые различия между глобальный и нелокальный Переменная/ключевые слова.

  1. В отличие от глобальный ключевое слово, нелокальный Ключевое слово работает только в Python 3 и выше Отказ
  2. глобальный Ключевое слово может использоваться с ранее существующими глобальными переменными или новыми переменными, тогда как нелокальный Ключевое слово должно быть определено с ранее существующей переменной.

Заключение

В этой статье мы узнали следующее:

  • Каковы имена в Python?
  • Что такое пространства имен в Python?
  • Что такое область в Python?
  • Правило разрешения свалки Legb в Python.
  • UndoundLocalError.
  • Глобальное и нелокальное ключевое слово.

Пожалуйста, подпишитесь и оставайся настроенными для получения дополнительных статей!

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.

Вы можете связаться со мной @: