2015年8月19日水曜日

Pythonの変数スコープ

Pythonのサンプルプログラムを見ていて気になることがあった。
例外処理で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 の名前空間とスコープ

1 件のコメント:

  1. At the time of our evaluate, bitcoin and different cryptocurrencies were not out there at Jackpot City. Other sites include Gaming Club, Lucky Nugget, Euro Palace, Royal Vegas, Ruby Fortune, 7Sultans and Spin Casino. Ultimately, all this effort signifies that JackpotCity on line casino 메리트카지노 Canada is one of the|is amongst the|is doubtless certainly one of the} high sites today.

    返信削除