python - 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
解决方案
你应该做三件事。
首先,将函数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
并想考虑一种可能性even
,None
那么您应该添加另一个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_even
beforelastmes
以便计算值。
print(is_even(50))
print(lastmes())
推荐阅读
- python-3.x - pyspark 排序从重复运行的不同值开始
- javascript - 使用 'overflow: hidden' (CSS) 和 jQuery 来防止用户滚动加载页面
- android - NavigationComponents 透明工具栏
- python - 获取与指定用户名相关的 Jenkins 构建信息
- c# - 在引用上使用 == 时发出警告(Visual Studio 或 ReSharper)
- airflow - 如何在通过命令行设置时在 Airflow 中的变量值中包含空格?
- excel - Excel 按产品名称分组和匹配
- c# - In .NET, is it appropriate to invoke BeginSendTo in the callback?
- algorithm - 迷宫解决 - 圆形路径问题
- javascript - 基于 URL 为网站提供多种语言