首页 > 解决方案 > UnboundLocalError:分配前引用的局部变量“文本”

问题描述

UnboundLocalError:分配前引用的局部变量“文本”

嗨,我收到此错误“UnboundLocalError:分配前引用的局部变量'文本'”。你如何解决这个问题?


这是我的代码:

even = None
def is_even(num):
    if num % 2 == 0:
        even = True
        return even
    elif num % 2 != 0:
        even = False
        return even

def lastmes():
    if even == True:
        text = "The last value of even is True"
    elif even == False:
        text = "The last value of even is False"
    return text

print(lastmes())
print(is_even(51))

这是我的错误信息:

Traceback (most recent call last):
  File "main.py", line 17, in <module>
    print(lastmes())
  File "main.py", line 15, in lastmes
    return text
UnboundLocalError: local variable 'text' referenced before assignment

标签: python

解决方案


你应该做三件事。

首先,将函数even内部的变量设为is_even全局变量。您只是在创建另一个局部变量并设置它的值,这不会改变even您在函数外部创建的值。

def is_even(num):
    global even #Here
    if num % 2 == 0:
        even = True
        return even
    elif num % 2 != 0: #You should change this to just an else but this works too
        even = False
        return even

其次,将elif函数lastmes中的 更改为else。如果您打算使用elif并想考虑一种可能性evenNone那么您应该添加另一个else来处理这种None可能性。

def lastmes():
    if even == True:
        text = "The last value of even is True"
    else:
        text = "The last value of even is False"
    return text

第三,在检查它们并显示消息之前调用is_evenbeforelastmes以便计算值。

print(is_even(50))
print(lastmes())

推荐阅读