機能の範囲はhello
とhi
はまったく異なります。それらには共通の変数はありません。
呼び出しの結果hi(x,y)
は何らかのオブジェクトであることに注意してください。good
関数内の名前でそのオブジェクトを保存しますhello
。
で指定さgood
れた変数は、関数でhello
指定された変数とは無関係の別の変数です。good
hi
スペルは同じですが、異なる名前空間に存在します。これを証明するgood
には、2 つの関数のいずれかで変数のスペルを変更します。それでも機能することがわかります。
編集。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 は最初のステートメント , is 3, is 2 を評価fordf150 = hi( y, x )
しy
ますx
。
を。Python は、 の評価用に新しい名前空間を作成しますhi
。
b. ではhi
、ix
オブジェクトにバインドされています3
。バインディングは位置順で行われます。
c. ではhi
、iy
オブジェクトにバインドされています2
。
d. ではhi
、何かが発生し、何かgood
のオブジェクトにバインドされます3.1415926
。
e. ではhi
、 areturn
が実行されます。オブジェクトを の値として識別しますhi
。この場合、オブジェクトは によって命名されgood
、オブジェクト 3.1415926
です。
f. 名前hi
空間は破棄されます。 good
、ix
そしてiy
消えます。ただし、オブジェクト ( 3.1415926
) は評価の値として残りますhi
。
ではhello
、Python は最初のステートメント , is 3, is 2 を終了しfordf150 = hi( y, x )
ますy
。x
の値はhi
です 3.1415926
。
を。 、fordf150
を評価することによって作成されたオブジェクトにバインドされます。hi
3.1415926
ではhello
、Python は他のステートメントに進みます。
ある時点something
で、オブジェクトにバインドされます2.718281828459045
。
ではhello
、 areturn
が実行されます。オブジェクトを の値として識別しますhello
。この場合、オブジェクトは によって命名されsomething
、オブジェクト 2.718281828459045
です。
名前空間は破棄されます。 fordf150
と と同様にsomething
消えます。ただし、オブジェクト ( ) は評価の値として残ります。x
y
2.718281828459045
hello
呼び出されたプログラムまたはスクリプトhello
が応答を取得します。