如何解决这个Python异常:局部变量';第27条;分配前参考
我有以下代码:如何解决这个Python异常:局部变量';第27条;分配前参考,python,exception,Python,Exception,我有以下代码: def id_to_article(id): if id == 1: article = "article: local" elif id == 2: article = "comments(article)" elif id == 3: article = "students" elif id == 4: .... elif id == 18: article
def id_to_article(id):
if id == 1:
article = "article: local"
elif id == 2:
article = "comments(article)"
elif id == 3:
article = "students"
elif id == 4:
....
elif id == 18:
article = "community news"
return article
我只调用id为1到18的文章。但我有一个例外:
local variable 'article' referenced before assignment
如何解决此问题?
在进入return
语句之前,可能无法设置文章。这可以通过在if语句序列之前对其进行初始化来解决。事实上,您传递的很可能不是1到18之间的整数,而是其他数字。尝试在第一个if语句之前打印id
和type(id)
,以查看函数中真正出现的内容。是Psython中if
块的局部变量吗?我添加了print id
,它总是在1到18的范围内,所以当它到达return
ing语句时,它不能被取消初始化;此外,如果在其他情况下使用此函数,它可能会有一个id
的值,这会导致文章
未被分配到。感谢您的解释。您的陈述可能不正确。在第一个if
语句之前打印id
并键入(id)
,以查看您真正传递的内容。@LarryLustig I仅Print id
,始终为1到18。type(id)
是关于什么的?@LarryLustig我刚刚打印了type(id)
it-
。。。这意味着什么?确定传递的是字符串还是浮点数,而不是整数。请参阅--传递的不是1
,而是“1”
(或者u“1”
,如果使用的是Python 2.x)。这是正确的答案。事实证明,1和“1”在Psython中的值惊人地不相等。如果有人有这个问题,那么你需要引用所有的数字来解决它。或者将其包装在int()
调用中。谢谢将1
与“1”
等同的编程语言很少。许多语言都会在函数定义中键入check参数(您必须将defid\u写入文章(integer id)
,并且不允许传递字符串),但Python不是这样工作的。非常有趣。关于普赛顿,我还有很多要学的。