C#プログラマからみたPython スコープ編

大雑把な概要

Pythonのスコープには、気にするものが2つしかない。

  • モジュールスコープ
  • ローカルスコープ

なお、言語仕様上グローバルスコープは存在しない。(ただしモジュールスコープのことをグローバルスコープという様子)


スコープの種類

ビルトインスコープ

組み込み関数や組み込みの変数などを指す。特に宣言やインポートを行わずに利用することが可能。このスコープについては特に意識する必要はない。
なお、このスコープ上に変数や関数を作成することはできない。

C#だとこの考え方はない…(と思う。)強いて言うなら、VisualStudioでクラスを新規作成したときに自動生成される、先頭のusingがそれにあたるか。


モジュール(グローバル)スコープ

モジュールのトップレベルで定義されている変数や関数が持つスコープ。
Pythonではこのスコープが最上位のスコープということになる。
そのためJavaScriptのように、一般的な意味のグローバルスコープは言語仕様上存在しない。
なお、クラスについてもモジュールと同様のスコープを持つ。

C#だとクラス変数と同じ。


ローカルスコープ

関数が持っているスコープ。その関数内でのみ有効。
C#メソッドが持っているスコープと同様。


これから勉強する…

Python複数モジュールをまたいだ変数を利用したいような場合はどうするの…('A`)?
いや、そんなグローバルなものはないほうがいいに決まってるんだけどさ。