Найти - Пользователи
Полная версия: Аргументы и разделяемые ссылки
Начало » Python для новичков » Аргументы и разделяемые ссылки
1
roggerg
Прошу помощи в разяснении примера из одной главы книги Лунца

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

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

Спасибо.


macGregor
Из приведённого кода следует, что вначале выполнения кода на число 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 и заменить значение, на которое она ссылается.
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