0

次のエラーが発生する理由を理解するのに助けが必要です:

Traceback (most recent call last):
  File "prawtest3.py", line 25, in <module>
    commentMatcher()
  File "prawtest3.py", line 13, in commentMatcher
    commentCollection.append(comment)
UnboundLocalError: local variable 'commentCollection' referenced before assignment

これは私のコードです。背景情報については、人のコメントを比較し、監視している人が新しいコメントを送信したときにユーザーに通知する reddit ボットを作成しようとしています。機能にも問題がある場合は、遠慮なくご意見をお寄せください。セマンティック エラーを心配する前に、まずコードを診断して構文エラーを取り除く必要があります。

import praw
import time 

r = praw.Reddit('PRAW related-question monitor by u/testpurposes v 1.0.')
r.login()
user = r.get_redditor('krumpqueen')
commentCollection = []
commentComparison = []

def commentMatcher():
    comments = user.get_comments(limit = 4)
    for comment in comments:
        commentCollection.append(comment)
    time.sleep(60)
    comments = user.get_comments(limit = 4)
    for comment in comments:
        commentComparision.append(comment)
    if commentCollection[1] != commentComparision[1]:
        r.send_message('krumpqueen', 'just made a new comment', 'go check now')
        commentCollection = list(commentComparision)
    else:
    r.send_message('krumpqueen', 'did not made a new comment', 'sorry')

while(True):
    commentMatcher()
4

2 に答える 2

1

を使用するとcommentCollection、 python (誤って1 )commentCollectionがローカルであると見なされます (後で割り当てがあり、globalステートメントがないため)。ローカル (まだ作成されていない) に追加しようとすると、python は UnboundLocalError をスローします。

1もちろん、python が誤った仮定をしているわけではありません。言語はそのように機能するように設計されています。

于 2014-02-04T03:06:52.197 に答える