Область видимости Python

Переменные доступны только в区域内 их создания. Это называется областью видимости.

Локальная область видимости

Переменные, созданные внутри функции,都属于 локальной области видимости этой функции и могут использоваться только внутри нее.

Пример

Внутри функции созданные переменные доступны только в этой функции:

def myfunc():
  x = 100
  print(x)
myfunc()

Запуск примера

Функция внутри функции

Как показано в примере выше, переменная x недоступна вне функции, но доступна для любой функции внутри функции:

Пример

Может получить доступ к локальной переменной из функции внутри функции:

def myfunc():
  x = 100
  def myinnerfunc():
    print(x)
  myinnerfunc()
myfunc()

Запуск примера

Глобальный диапазон

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

Глобальные переменные доступны в любом диапазоне (глобальном и локальном).

Пример

Переменные, созданные вне функции, являются глобальными и могут быть использованы кем угодно:

x = 100
def myfunc():
  print(x)
myfunc()
print(x)

Запуск примера

Именованные переменные

Если внутри функции и снаружи работают с одноименными переменными, Python будет рассматривать их как два отдельных переменных, одна из которых доступна в глобальном диапазоне (снаружи функции), а другая в локальном диапазоне (внутри функции):

Пример

Эта функция будет распечатывать локальную переменную x, а затем код также будет распечатывать глобальную переменную x:

x = 100
def myfunc():
  x = 200
  print(x)
myfunc()
print(x)

Запуск примера

Ключевое слово Global

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

Ключевое слово global делает переменную глобальной.

Пример

Если используется ключевое слово global, то переменная принадлежит глобальному диапазону:

def myfunc():
  global x
  x = 100
myfunc()
print(x)

Запуск примера

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

Пример

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

x = 100
def myfunc():
  global x
  x = 200
myfunc()
print(x)

Запуск примера