Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Глобальные, локальные и nonlocal переменные в Python: понимание и применение

Понимание глобальных, локальных и nonlocal переменных в Python

Освойте использование глобальных, локальных и nonlocal переменных в Python и знайте, когда применять каждую для чистого, поддерживаемого кода.

Видео: локальные и глобальные переменные в Python

Глобальные переменные

В Python переменная, объявленная вне любой функции — на уровне модуля — является глобальной переменной. Её можно читать из любого места модуля, но для изменения внутри функции нужно объявить её с ключевым словом global.

Пример: создание и чтение глобальной переменной

x = "global"
def foo():
    print("x inside:", x)

foo()
print("x outside:", x)

Вывод

x inside: global
x outside: global

Попытка переопределить x без объявления его глобальным приводит к UnboundLocalError:

x = "global"
def foo():
    x = x * 2
    print(x)

foo()

Вывод

UnboundLocalError: local variable 'x' referenced before assignment

Чтобы изменить глобальную переменную внутри функции, используйте ключевое слово global:

x = "global"
def foo():
    global x
    x = x * 2
    print(x)

foo()

Вывод

globalglobal

Локальные переменные

Локальная переменная определяется внутри тела функции и существует только во время её выполнения. К ней нельзя обратиться вне функции.

Пример: обращение к локальной переменной вне её области видимости

def foo():
    y = "local"

foo()
print(y)

Вывод

NameError: name 'y' is not defined

Правильное определение и использование локальной переменной:

def foo():
    y = "local"
    print(y)

foo()

Вывод

local

Комбинирование глобальных и локальных переменных

Обычно в одном модуле используют обе области видимости. Ключевое слово global гарантирует, что переменная ссылается на экземпляр уровня модуля.

x = "global "
def foo():
    global x
    y = "local"
    x = x * 2
    print(x)
    print(y)

foo()

Вывод

global global
local

Когда локальная переменная имеет то же имя, что и глобальная, они независимы:

x = 5
def foo():
    x = 10
    print("local x:", x)

foo()
print("global x:", x)

Вывод

local x: 10
global x: 5

Nonlocal переменные

Вложенные функции могут обращаться к переменным из их обрамляющей (но не глобальной) области видимости и изменять их с помощью ключевого слова nonlocal.

def outer():
    x = "local"
    def inner():
        nonlocal x
        x = "nonlocal"
        print("inner:", x)
    inner()
    print("outer:", x)

outer()

Вывод

inner: nonlocal
outer: nonlocal

Примечание: Обновление nonlocal переменной внутри внутренней функции обновляет переменную в области видимости внешней функции.

Python

  1. Переменные, константы и литералы в C: полное руководство
  2. Ключевые слова и идентификаторы в Python: мастерство зарезервированных слов и соглашений об именовании
  3. Операторы, отступы и комментарии в Python: понятное руководство
  4. Переменные, константы и литералы в Python — подробное руководство
  5. Мастерство преобразования типов в Python: Полное руководство
  6. Мастерство ввода-вывода и импорта модулей в Python: Практическое руководство
  7. Ключевое слово global в Python: как и когда использовать
  8. Числа, преобразование типов и математика в Python: полное руководство
  9. Управление директориями и файлами в Python: полное руководство
  10. Ошибки и встроенные исключения в Python: полное руководство