Python3x未绑定本地错误

Python3x未绑定本地错误,python,python-3.x,Python,Python 3.x,我已经回顾了类似问题的答案,并尝试了各种推荐的迭代,但没有任何运气。在“return pick.CalendarFrame(rundate1)”行中,我收到了这个错误“UnboundLocalError:分配前引用的局部变量“rundate1”。我的代码是 def GetCalendar(): os.system("Pick.py") def rundate1(): result = tkinter.messagebox.askyesno(title="Rundate", messag

我已经回顾了类似问题的答案,并尝试了各种推荐的迭代,但没有任何运气。在“return pick.CalendarFrame(rundate1)”行中,我收到了这个错误“UnboundLocalError:分配前引用的局部变量“rundate1”。我的代码是

def GetCalendar():
os.system("Pick.py")

def rundate1():
    result = tkinter.messagebox.askyesno(title="Rundate", message="back 7 days?")
#result = tkinter.messagebox.askyesno()
    if result == True:
        rundate1 = date.today() - timedelta(7)
        print("rundate 1 = ", rundate1)
        return rundate1

    else:
        GetCalendar()
        return pick.CalendarFrame(rundate1)
        print("rundate 1 = ", rundate1)
        return rundate1 

rundate = rundate1()
print("rundate = ", rundate)
if语句的第一部分工作正常,我单击yes并获取返回数据。当点击“否”时,我的日历对话框弹出,我可以选择我的日期,但之后一切都崩溃了。应用程序“Pick.py”本身工作得很好。CalendarFrame的提交是

    def submit(): 
        start = self.result1.strftime("%m/%d/%Y")
        end = self.result2.strftime("%m/%d/%Y") 
        rundate1 = start, end
        return rundate1
        print(rundate1) 

非常感谢您为函数和本地日期变量使用名称
rundate1
。我相信如果你改变其中一个,你会解决你的问题(也可能使你的代码的意图更加明显)。我保留了def rundate1(),并将该def中对rundate1的引用更改为rundate。(与提交相同)我现在在execute“cur.execute(query,(rundate))中得到一个pyodbc.programmingError:(无效的参数类型=函数)正如@bdesham提到的,您不应该使用相同的名称,同样在else子句中,您使用的是
rundate1
变量,它从来没有初始化过。我想我只是速度慢了一点。我完全不明白。还有什么地方可以帮我解决这个问题和其他问题吗?