パスワードを忘れた? アカウント作成
592074 journal

kahoの日記: 変数スコープ

日記 by kaho

Pythonを使っていて気になるのは,ブロックの中で定義した変数がブロックを出た後でも見えてしまうことだ.
例えば

for i in range( 10 ):
        a = i + 1
print a

とすると,私としてはaは未定義だとエラーを出して欲しいところなのだが,10になってしまう.
変数定義がいらないのは便利なことなのだが,あるスコープの中でだけ有効な変数を使いたいときに困ってしまう.関数のスコープ内では保護されているのだが,制御文のブロックの中でも保護されて欲しいところだ.
特にPythonで怖いのはモジュールの名前と衝突してしまったりするときがあり,importとの組み合わせでハチャメチャなことになりかねない.できれば名前空間を細かく分割して欲しい.例えばPerlにおけるmyのようなキーワードがないものだろうか.

もし他のスクリプト言語でブロック単位での名前空間の分割をやってくれるなら移行してもいいと思ったのだが,RubyもGroovyもやってくれないようだったので気をつけてスクリプトを書くしかないかというところ.

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

物事のやり方は一つではない -- Perlな人

読み込み中...