Чтобы понять, как работает код, просто следуйте функциям.
foo
называется. Поскольку integer
типы неизменны ( Википедия ) в foo(x,y)
x
и y
являются копиями x
и y
, которые вы указали в качестве параметров.
В выражении python, следовательно, вычисляются слева направо.
Первая функция hoo
вызывается (то же самое замечание относительно параметров), значения x
и y
изменяются, и вычисляется z
, вы получаете ('x =', 5, '; y =', 6, '; z =', 11)
и возвращается значение z
(11) ,
Находясь снаружи hoo
, функции x
и y
на этом уровне равны соответственно 10 и 20, потому что они не были изменены (неизменная вещь… см. Выше). Затем вызывается функция goo
. (то же самое замечание относительно параметров) ( предупреждение вы вводите y
для параметра x
из goo
и x
для параметра y
из goo
) значение x
и y
изменяются и вычисляется z
, вы получаете ('x =', 40, '; y =', 30, '; z =', 70), и возвращается значение z
(70).
Находясь снаружи goo
, функции x
и y
на этом уровне равны соответственно 10 и 20, потому что они не были изменены (неизменная вещь ... см. Выше).
Функция суммирования между двумя значениями, возвращаемыми hoo
и goo
, выполнена. z
= 11 + 70. Вы получаете ('x =', 10, '; y =', 20, '; z =', 81) и возвращается z.
Затем вне функции foo
. x
и y
на этом уровне соответственно 10 и 20, потому что они не были изменены (неизменяемая вещь ... см. Выше). z дается значение возвращаемой функции foo
, поэтому z
= 81
И вы получите ('x =', 10, '; y =', 20, '; z =', 81)