【发布时间】:2019-07-01 21:07:07
【问题描述】:
(不问这个问题的解决方法,只是想了解错误)
我收到以下错误
UnboundLocalError: local variable new_list referenced before assignment
在尝试运行这段代码时。我的逻辑是“如果new_list 不存在,则创建new_list,否则使用分配new_list.next,但在这种情况下似乎不起作用。
有人可以向我解释为什么,我应该怎么做才能解决这个错误?
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
temp = 0
while l1 or l2:
if l1 and l2:
new_val = (l1.val + l2.val) % 10 + temp
new_node = ListNode(new_val)
if l1:
new_node = ListNode(l1.val + temp)
if l2:
new_node = ListNode(l2.val + temp)
if not new_list:
new_list = new_node
else:
new_list.next = new_node
if new_val and new_val > 9:
temp = 1
else:
temp = 0
return new_list
【问题讨论】:
-
就像你说的:它不存在。所以你不能做
if not new_list。 -
欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确说明问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您指定的问题。您发布的代码定义了一个函数并退出而不执行任何操作。我们不经常进行桌面检查。
-
@prune 在这种情况下,OP 的代码实际上正是重现
UnboundLocalError所需的全部内容。我对UnboundLocalErrorin this answer有一个相当透彻的解释。对于 OP 的代码,他们分配给new_list(隐式地将其设为局部变量)在检查new_list的值之后(假定它是一个已经存在的非局部变量)。 -
@Iguananaut:我标记它是因为我在 Python 3.6.8 中没有遇到这样的错误。但是,感谢您的链接;我已将其标记为以后的 dup 锤的“最爱”。
标签: python