Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 26, 2022 11:40:09

KamilKamil
Зарегистрирован: 2022-07-26
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему функция иногда не видит глобальную область

Здравствуйте.
Никак не могу понять, почему функция не видит значение “x”:

 x = 5
def name():
    x= x+10
name(x)
print(x)

Ведь она видит значение в очень похожем коде:

 x = 5
def name():
    y = x+10
    print(y)
name() 

И в первом и во втором случае идет обращение к “x” в глобальной области видимости. Но вот почему, в одном случае функция видит “x”, а в другом случае нет, никак не могу понять((((

Заранее спасибо за разъяснение)

Офлайн

#2 Авг. 26, 2022 12:09:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Почему функция иногда не видит глобальную область

KamilKamil
Но вот почему, в одном случае функция видит “x”, а в другом случае нет, никак не могу понять((((
потому что во втором случае нет присваивания, то есть операция безопасна, и интерпретатор позволяет вам неявно использовать переменную из глобальной области видимости. Если же вам нужно изменить значение переменной из внешней области видимости это нужно делать явно
  x = 5
def name():
    global x
    x= x+10
name() 



Офлайн

#3 Авг. 26, 2022 13:00:18

KamilKamil
Зарегистрирован: 2022-07-26
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему функция иногда не видит глобальную область

FishHook
Спасибо)

Офлайн

#4 Авг. 26, 2022 13:12:07

KamilKamil
Зарегистрирован: 2022-07-26
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему функция иногда не видит глобальную область

FishHook
Можете еще подсказать, почему тут на принт уйдет 10?:

 x = 5
def name():
    global x
    x = 10
name()
def name2():
    print(x) 
name2()

Офлайн

#5 Авг. 26, 2022 13:47:25

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Почему функция иногда не видит глобальную область

KamilKamil
Можете еще подсказать, почему тут на принт уйдет 10?:
а что должно уйти? Вы же сами присвоили иксу значение 10



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version