python - 为什么 python 显示 UnboundLocalError: local variable 'w' referenced before assignment?
问题描述
from datetime import datetime
now = datetime.now()
q = int(now.strftime('%I'))
w = int(now.strftime('%M'))
def correct_time(time_diff):
if w < (120 - time_diff):
q = q + 1
w = w + (time_diff - 60)
else:
q = q + 2
w = w + time_diff - 120
return q, w
correct_time(105)
#gives the error - UnboundLocalError: local variable 'w' referenced before assignment
在上面的代码中,我导入了 datetime 模块并分配了两个变量 q 和 w(如代码的第 3 行和第 4 行所示)。但是在调用函数“correct_time()”时,Jupyter 笔记本会给出UnboundLocalError消息。
根据我之前在创建函数时所看到的,在 python 中,函数可以使用在函数之前和外部调用的变量。既然变量 q 和 w 已经被定义了,为什么它不能在函数内部被识别?
解决方案
在函数correct_time
中,您分配给它,w
因此它被定义为局部变量。
但是,在分配给 之前w
,请检查if w < (120 - time_diff):
在这一点上,w
没有绑定到任何东西,这会给你那个错误。你应该改为
A. 定义q
and w
inside correct_time
,或
B. 参数化q
并w
在函数调用中传递它,如correct_time(105, q, w)
推荐阅读
- python - 无法编译将字符串转换为日期可读格式的 Matplotlib 问题
- excel - 宏保存到 .pdf 时出现运行时错误“-2147024773 (8007007b)”
- jquery - Ajax/cakephp 2. 单击一个复选框,然后填充两个不同的选择框
- html - 如何确保一个元素不被另一个(CSS)覆盖?
- javascript - Aurelia 和导入和使用 Highcharts X-range
- ant - Jmeter 与 Ant 的集成-如何通过电子邮件从 ant 发送 html 报告
- php - 如何使用 laravel 库在 dompdf 中加载字体系列?
- android - 重新连接到互联网时显示进度条
- python - seve 图片 'data:image/jpeg;base64' 与 python
- razor - 在 Razor 中显示百分比符号