Разрешение переменной Python

С учетом следующего кода:

a = 0
def foo():
  # global a
  a += 1
foo()

При запуске Python жалуется: UnboundLocalError: локальная переменная 'a' ссылается до присваивания

Однако, когда это словарь ...

a = {}
def foo():
  a['bar'] = 0
foo()

Все работает отлично ...

Кто-нибудь знает, почему мы можем ссылаться на 2-й фрагмент кода, но не на 1-й ?

6
задан Chien 19 August 2010 в 20:35
поделиться