>>356はドジっ娘なだけでホントは分かってる人だろうからいいんだけど、初心者は、
数字/文字列/True/False/タプル以外の初期値はdefault=Noneにする習慣つけるといいよ。
関数内で
if default is None:
  default = なんたらかんたら
ってする。
そのまま指定できる型でも、変に指定するよりも関数内で指定した方が処理がわかりやすくなることもある。

意図的に
_nonlocal_vars={}
って引数を付けて、その仕組みを悪用するという技もあるとかないとか……
便利だけどよくないってことで、python3からはnonlocalキーワードが追加されたよ。