Почему Python жалуется на ссылку до присваивания при увеличении переменных в функции? - PullRequest
3 голосов
/ 27 октября 2010

Почему Python жалуется на ссылку chrome перед назначением? Он не жалуется на словарь. Это с Python 2.5, если это имеет значение.

def f():
  google['browser'] = 'chrome'
  chrome += 1

google = dict()
chrome = 1
f()

Конечно, я могу заставить его работать с global chrome, но я хотел бы знать, почему Python не считает переменную назначенной. Спасибо.

Ответы [ 2 ]

5 голосов
/ 27 октября 2010

В заявлении

chrome += 1

и он еще не создан. Переменные создаются при первом назначении. В этом случае, когда python видит код, увеличивающий 'chrome', он вообще не видит эту переменную.

Попробуйте изменить код как

chrome = 1

def f():
  global chrome
  google['browser'] = 'chrome'
  chrome += 1

google = dict()
f()
0 голосов
/ 27 октября 2010

Это выходит за рамки: читать здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...