赋值前引用局部变量“第一个”
这个问题在这里已经有了答案:
Python为任何赋值扫描一个函数体,如果它们没有明确声明为global
,那么它会为该名称创建一个本地作用域变量。 由于您在reverse()
函数中first
分配,并且您没有在该函数的作用域中first
显式声明为全局变量,python会创建一个名为first
的局部变量来隐藏全局变量。
比较之后的任务并不重要; python隐式地声明了函数开头的所有局部变量。
为了解决这个问题,你可以在reverse()
函数中声明first
是全局的,但正如其他人所说的那样,应尽可能避免使用全局变量。