Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для новичков
  • » Почему в функции меняется глобальная переменная, если я меняю в ней значение через индекс? [RSS Feed]

#1 Июнь 17, 2016 17:09:38

Karalov86
Зарегистрирован: 2016-06-17
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

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

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

a = [1,2,3]
def song():
   a[1] = 4
   print(a)
song()
print(a)
#[1, 2, 3]
#[1, 4, 3]
#[1, 4, 3]

Отредактировано Karalov86 (Июнь 17, 2016 18:32:05)

Офлайн

#2 Июнь 17, 2016 17:45:44

Puten
Зарегистрирован: 2016-01-06
Сообщения: 40
Репутация: +  2  -
Профиль   Отправить e-mail  

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

Если с инглишом проблем нету, то объяснение можно почитать тут

Если в функции создать переменную с таким же именем, то она будет локальной, если обращаться с глобальной переменной (без писания global в функции), то она будет изменяться.

Можете в функции создать

a = []
, увидите, что список не поменялся, т.к. просто создается локальная переменная с тем же именем, а если обращаться к списку, то он изменится, т.к. виден во всех объектах ( в данном случае в функции).

Почитайте еще раз про области видимости.
Надеюсь понятно.

Отредактировано Puten (Июнь 17, 2016 17:46:14)

Офлайн

  • Начало
  • » Python для новичков
  • » Почему в функции меняется глобальная переменная, если я меняю в ней значение через индекс?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version