Найти - Пользователи
Полная версия: Почему функция иногда не видит глобальную область
Начало » Python для новичков » Почему функция иногда не видит глобальную область
1
KamilKamil
Здравствуйте.
Никак не могу понять, почему функция не видит значение “x”:

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

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

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

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

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

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

FishHook
KamilKamil
Можете еще подсказать, почему тут на принт уйдет 10?:
а что должно уйти? Вы же сами присвоили иксу значение 10
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB