【发布时间】:2026-02-18 06:10:01
【问题描述】:
我有代码:
def main(m):
res = m
def help(a, b):
print(res)
#res = min(res, a*b)
help(3,2)
return res
main(3)
代码有效。不过
def main(m):
res = m
def help(a, b):
print(res)
res = min(res, a*b)
help(3,2)
return res
main(3)
它引发UnboundLocalError: local variable 'res' referenced before assignment
def main(m):
global res
res = m
def help(a, b):
print(res)
res = min(res, a*b)
help(3,2)
return res
main(3)
看来我添加global res 并没有改变。这里发生了什么?如何更新函数help内的res?
【问题讨论】:
-
问题在于,添加行
res = min(res, a*b)实际上在help函数中引入了一个新变量res,它与 @ 中的变量res不同 987654333@。我会在几秒钟内写一个完整的答案。 -
这能回答你的问题吗? Short description of the scoping rules?
标签: python-3.x local-variables nested-function