
8
章 クラス入門
you are here
321
スコープを処理する
関数内で使われる変数について、
>>>
プロンプトを使って調べてみましょう。次のコードを
試してください。コメントに
1
から
8
の番号を付けて説明しています。
関数のブロック内で変数を定義すると、変数は関数を実行している間だけ存在します。つまり、
変数は「スコープ内」で、関数のブロック内で見ることができ利用できます。しかし、関数が終了す
ると、関数内で定義した変数は破棄されます。変数は「スコープ外」となり、変数が使ったリソー
スはインタプリタが回収します。
soundbite
関数内で使われる
3
つの変数には、上のようなことが起こっているのです。関数
が終了した瞬間に、
insider
、
outsider
、
from_outside
は消えます。関数のブロック外
(別名:関数のスコープ外)でこれらの変数を参照すると、
NameError
となります。
1. soundbite
関数は引数を
1
つ取ります。
3.
引数を関数内の
別の変数に代入します。
7.
関数が短い
メッセージを表示
した後、
name
の
値にはまだアクセス
できます。
8.
でも、関数内で
使われる変数は
関数のブロック内に
のみ存在するため、
どの変数にもアクセス
できません。
2.
値を関数内の
変数に代入します。
4.
関数の
変数を使って
メッセージを
表示します。
5.
値を変数
name
に
代入します。
6. soundbite
関数を
呼び出します。