首页 > 解决方案 > 为什么 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 已经被定义了,为什么它不能在函数内部被识别?

标签: pythonfunctiondatetime

解决方案


在函数correct_time中,您分配给它,w因此它被定义为局部变量。

但是,在分配给 之前w,请检查if w < (120 - time_diff):

在这一点上,w没有绑定到任何东西,这会给你那个错误。你应该改为

A. 定义qand winside correct_time,或
B. 参数化qw在函数调用中传递它,如correct_time(105, q, w)


推荐阅读