変数のスコープとか条件演算子とか辞書とか

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


C++の条件演算子的なコードを書きたい場合は、

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 )

と書くのと同じですが。