首页 新闻 会员 周边 捐助

要想不报unboundLocalException

0
[已解决问题] 解决于 2025-08-09 14:03

同一个作用域里,只要某处对变量做了“赋值”操作(包括 =、+=、for x in …、import x 等),Python 就会把它当作局部变量,这时提前访问变量,就会报UnboundLocalError: local variable 'xxx' referenced before assignment。

_java_python的主页 _java_python | 小虾三级 | 园豆:1000
提问于:2025-08-09 14:01
< >
分享
最佳答案
0
  1. 在函数顶部就给变量一个默认值
    def foo(flag):
    result = None # 先“声明”/初始化
    if flag:
    result = 123
    return result # 无论 flag 是真是假,result 都已绑定

  2. 用 global / nonlocal 把变量声明为外层作用域的
    当函数里需要修改全局变量或闭包变量,而不是新建局部变量时,用这两个关键字

count = 0
def incr():
    global count           # 告诉解释器 count 不是局部变量
    count += 1
def bar():
    x = 10
    def inner():
        return x           # 只读取,不赋值,不会变成 local
    return inner()
_java_python | 小虾三级 |园豆:1000 | 2025-08-09 14:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册