Python自定义函数报UnboundLocalError错误原因咨询
错误触发原因
Python 遵循静态作用域规则,对函数内的变量判定逻辑为:只要函数体内存在对某变量的赋值操作,该变量就会被标记为函数局部变量,解释器不会主动向外层全局作用域查找该变量。
- 你的
mopcom()函数内部存在mop = random.choice(lista)赋值语句,vopcom()内部存在vop = random.choice(lista)赋值语句,因此mop、vop会被分别判定为两个函数的局部变量。 - 函数执行时,会先运行
if lista.index(mop) > lista.index(pivot)/if lista.index(vop) < lista.index(pivot)的判断逻辑,此时局部变量mop/vop还没执行到赋值步骤,没有绑定任何值,尝试读取就会触发你看到的未绑定局部变量错误。 - 代码中的
pivot没有触发同类错误,是因为两个函数内部都没有对pivot做赋值操作,解释器会自动向外层全局作用域查找pivot的值。
内容的提问来源于stack exchange,提问作者mandodod
相关产品推荐
相关产品推荐

