例外処理でtry-catch-finallyの外側で変数宣言をしていないのに、tryとfinallyそれぞれで同じ変数を参照していた。
try: instance = SomeClass() instance.getSomething() except Exception, e: print 'Error %s' % e finally: if instance is not None: instance.doSomething()
JavaやC++ではこのような書き方はエラーになるので非常に違和感があった。
そこで調べてみたところ、 Pythonでは変数のスコープは基本的に
- クラス
- 関数
この二つしかなくif分や例外等の制御構文ではスコープは存在しないということだった。
参考:Python の名前空間とスコープ
0 件のコメント:
コメントを投稿