機能の範囲はhelloとhiはまったく異なります。それらには共通の変数はありません。
呼び出しの結果hi(x,y)は何らかのオブジェクトであることに注意してください。good関数内の名前でそのオブジェクトを保存しますhello。
で指定さgoodれた変数は、関数でhello指定された変数とは無関係の別の変数です。goodhi
スペルは同じですが、異なる名前空間に存在します。これを証明する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を評価することによって作成されたオブジェクトにバインドされます。hi3.1415926
ではhello、Python は他のステートメントに進みます。
ある時点somethingで、オブジェクトにバインドされます2.718281828459045。
ではhello、 areturnが実行されます。オブジェクトを の値として識別しますhello。この場合、オブジェクトは によって命名されsomething、オブジェクト 2.718281828459045です。
名前空間は破棄されます。 fordf150と と同様にsomething消えます。ただし、オブジェクト ( ) は評価の値として残ります。xy2.718281828459045hello
呼び出されたプログラムまたはスクリプトhelloが応答を取得します。