Python错误不让程序运行,因为它说没有定义局部变量

2024-04-18 17:35:55 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,它说提交并没有在这段代码中定义,而实际上是这样的。我正在尝试使用tkinter,因此.get()reddit praw api。我正在尝试使用函数saver\u vars,它从GUI保存单个变量,并使用它们来发出请求,然后将该请求交给request\u 1处理,它有更多的代码。但不要担心格式问题,因为我知道格式是正确的

def saver_vars():

    global urlLink
    urlLink = e1.get()

    global submission_numb
    submission_numb = e2.get()

    global name_file
    name_file = e3.get()

    global File_Path
    File_Path = e4.get()
    File_Path.replace(r'\\', "/")

    global MidPicDir
    MidPicDir = e4.get()
    MidPicDir.replace(r'\\', "/")

    global choice
    choice = e5.get()
    nonurl=urlparse(urlLink)
    reddit_request1 = praw.Reddit(client_id='something',
                     client_secret="something", password='something!',
                     user_agent='something by /u/the_anti-vac', username='something')
    # try: 

    if choice == "1":
        submissions = reddit_request1.subreddit('AskReddit').hot(limit = int("{0}".format(submission_numb)))

    if choice == "2":
        submissions = reddit_request1.get_submission(submission_id=nonurl.path.split('/')[4])




    master.quit()

    request_1(submissions)



def request_1(submissions):
    submission_info = ""
    count_1 = 0
    for submission_1 in submissions:
        print("submissiontitle" + submission_1.title)

我希望它运行时没有此错误消息local variable 'submissions' referenced before assignment。它把这个错误放在request_1


Tags: path代码submissiongetrequestglobalsomethingfile
1条回答
网友
1楼 · 发布于 2024-04-18 17:35:55

代码的问题是,如果您的选择不等于1或2,则不会创建变量submissions。因此,在使用它或像我的示例中那样初始化它之前,可以通过在代码中的任何位置声明它来确保它始终存在。您可以使用None关键字来初始化变量,但将其保持为空,并准备好放在那里。它看起来是这样的:

submissions = None

if choice == "1":
    submissions = reddit_request1.subreddit('AskReddit').hot(limit = int("{0}".format(submission_numb)))

if choice == "2":
    submissions = reddit_request1.get_submission(submission_id=nonurl.path.split('/')[4])
...

或者你可以做if..else if。。其他更好的代码实践:

if choice == "1":
    submissions = reddit_request1.subreddit('AskReddit').hot(limit = int("{0}".format(submission_numb)))
elif choice == "2":
    submissions = reddit_request1.get_submission(submission_id=nonurl.path.split('/')[4])
else:
    submissions = None
... 
...

应该是这样的

相关问题 更多 >