Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 21, 2016 19:59:29

roggerg
Зарегистрирован: 2015-03-12
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Аргументы и разделяемые ссылки

Прошу помощи в разяснении примера из одной главы книги Лунца

 def f(a):
    a = 99
b = 88 # Первоначально именна a и b ссылаються на одно и тоже число 88 
f(b)
print(b)
    

Мне не понятен коментарий. Почему a и b ссылаються на одно и тоже число 88 именно в этот момент.
И почему после вызова функция переменная b не изменилась?

Спасибо.


Офлайн

#2 Сен. 21, 2016 21:51:26

macGregor
Зарегистрирован: 2016-09-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Аргументы и разделяемые ссылки

Из приведённого кода следует, что вначале выполнения кода на число 88 ссылается только b.

roggerg
def f(a):
a = 99
b = 88 # Первоначально имена a и b ссылаются на одно и тоже число 88
f(b)
print(b)
Читаем код как он выполняется:
1. В глобальном пространстве имён создаётся переменная b, которая ссылается на число 88.
2. Выполняется вычисление функции f(b):
2.1. В локальном пространстве имён создаётся переменная a, которая ссылается на число 88.
2.2. Локальная переменная a начинает ссылаться на число 99.
2.3. Функция завершается, локальное пространство имён уничтожается.
3. Выводится на экран значение, на которое ссылается переменная b, а это число 88.

Если нужно изменить значение переменной b, есть два варианта:
1. Переменной b нужно присвоить значение результата вычисления функции и сделать так, чтобы функция возвращала этот результат.
2. В теле функции использовать глобальную переменную b и заменить значение, на которое она ссылается.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version