Pythonにおける局所変数のスコープは、ブロックレベルではなく関数レベルで管理されます:
x = 0 def f( cond ): if cond: x = 1 # これは f に変数 x を作っている。上の x とは無関係。 else: x = 2 return x # f の x が返される。 print( f(True) ) # 1 print( x ) # 0
d = { 'hoge': 23, 'fuga': 42 } def f(key): return d[key] if key in d else 0 print( f('hoge') ) # 23 print( f('piyo') ) # 0
とか書きます。もっとも、この f は、
def f(key): return d.get( key, 0 )
と書くのと同じですが。