Python3中UnboundLocalError报错原因咨询(仅需解释原因)
为什么会出现UnboundLocalError?
这个报错的核心原因是Python的变量作用域规则在起作用,咱们一步步拆解清楚:
- 你在全局作用域定义了
c=1,这本身是没问题的。 - 但在函数
i()里写了c=c+1——当Python检测到函数内部存在对变量c的赋值操作时,会默认把c判定为这个函数的局部变量,不再去全局作用域寻找同名变量。 - 问题就出在这一步:执行
c=c+1时,Python会先尝试获取局部变量c的值来完成加法运算,但这个局部的c还没有被赋值(你只声明了要给它赋值,却没先定义它的初始值),所以直接抛出了UnboundLocalError,提示你局部变量c在赋值前就被引用了。
简单总结就是:函数内的赋值操作让Python把c标记成了局部变量,但你在给它赋值之前就想调用它的值,自然就触发了报错。
内容的提问来源于stack exchange,提问作者sungmin yoo
相关产品推荐
相关产品推荐

