Объем функций hello
и hi
совершенно различны. У них нет общих переменных.
Обратите внимание, что результатом вызова hi(x,y)
является некоторый объект. Вы сохраняете этот объект с именем good
в функции hello
.
Переменная с именем good
в hello
является другой переменной, не связанной с переменной с именем good
в функции hi
.
Они написаны одинаково, но существуют в разных пространствах имен. Чтобы доказать это, измените написание переменной good
в одной из двух функций, вы увидите, что все еще работает.
Редактировать. Последующее наблюдение: «так что мне делать, если я хочу использовать результат функции hi
в функции hello
?»
Ничего необычного. Посмотрите на hello
близко.
def hello(x,y):
fordf150 = hi(y,x)
"then do somethings,and use the variable 'fordf150'."
return something
def hi(ix, iy):
"compute some value, good."
return good
Сценарий оценивается hello(2, 3)
.
Python создает новое пространство имен для оценки hello
.
В hello
, x
привязан к объекту 2
. Связывание выполняется по порядку.
В hello
, y
привязан к объекту 3
.
В hello
, Python оценивает первое утверждение, fordf150 = hi(y, x)
, y
3, x
является 2.
а. Python создает новое пространство имен для оценки hi
.
b. В hi
, ix
привязан к объекту 3
. Связывание выполняется по порядку.
c. В hi
, iy
привязан к объекту 2
.
d. В hi
что-то происходит, и good
привязан к какому-то объекту, скажем 3.1415926
.
e. В hi
исполняется return
; идентифицируя объект как значение для hi
. В этом случае объект называется good
и является объектом 3.1415926
.
f. Пространство имен hi
отбрасывается. good
, ix
и iy
исчезли. Объект (3.1415926
), однако, остается в качестве значения для оценки hi
.
В hello
, Python завершает первое утверждение, fordf150 = hi(y, x)
, y
3, x
равно 2. Значение hi
является 3.1415926
.
a. fordf150
привязан к объекту, созданному путем оценки hi
, 3.1415926
.
В hello
, Python переходит к другим операторам.
В какой-то момент something
привязан к объекту, скажем, 2.718281828459045
.
hello
, a return
; идентифицируя объект как значение для hello
. В этом случае объект имеет имя something
и является объектом 2.718281828459045
.
Пространство имен отбрасывается. fordf150
и something
исчезают, как и x
и y
. Объект (2.718281828459045
), однако, остается в качестве значения для оценки hello
.
Любая программа или сценарий под названием hello
получает ответ.
Ваш вопрос не совсем ясно для меня. Как связаны два метода? Они принадлежат к одному классу? – 2008-12-10 22:23:25
Да, они в одном классе, только функция кулака должна получить результат от второй функции, чтобы что-то сделать. – NONEenglisher 2008-12-10 22:28:13