为什么在增加函数中的变量时,Python会在赋值之前抱怨引用?

3 python variables function

为什么Python抱怨chrome在分配之前被引用?它没有抱怨字典.如果它有所作为,这是使用Python 2.5.

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

google = dict()
chrome = 1
f()
Run Code Online (Sandbox Code Playgroud)

global chrome当然可以使它工作,但我想知道为什么Python不考虑分配变量.谢谢.

pyf*_*unc 5

在声明中

chrome += 1
Run Code Online (Sandbox Code Playgroud)

它尚未创建.变量是在第一次分配时创建的.在这种情况下,当python看到代码递增'chrome'时,它根本看不到这个变量.

尝试将代码重新排列为

chrome = 1

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

google = dict()
f()
Run Code Online (Sandbox Code Playgroud)