C#プログラマからみたPython スコープ編
大雑把な概要
Pythonのスコープには、気にするものが2つしかない。
- モジュールスコープ
- ローカルスコープ
なお、言語仕様上グローバルスコープは存在しない。(ただしモジュールスコープのことをグローバルスコープという様子)
スコープの種類
ビルトインスコープ
組み込み関数や組み込みの変数などを指す。特に宣言やインポートを行わずに利用することが可能。このスコープについては特に意識する必要はない。
なお、このスコープ上に変数や関数を作成することはできない。
C#だとこの考え方はない…(と思う。)強いて言うなら、VisualStudioでクラスを新規作成したときに自動生成される、先頭のusingがそれにあたるか。
モジュール(グローバル)スコープ
モジュールのトップレベルで定義されている変数や関数が持つスコープ。
Pythonではこのスコープが最上位のスコープということになる。
そのためJavaScriptのように、一般的な意味のグローバルスコープは言語仕様上存在しない。
なお、クラスについてもモジュールと同様のスコープを持つ。
C#だとクラス変数と同じ。
ローカルスコープ
関数が持っているスコープ。その関数内でのみ有効。
C#のメソッドが持っているスコープと同様。
これから勉強する…
Pythonで複数モジュールをまたいだ変数を利用したいような場合はどうするの…('A`)?
いや、そんなグローバルなものはないほうがいいに決まってるんだけどさ。