나는 다음과 같은 파이썬 코드가 있습니다UnboundLocalError 중첩 된 함수의 재귀 호출에
def find_words(letters):
results = set()
def extend_prefix(w, letters):
if w in WORDS: results.add(w)
if w not in PREFIXES: return
for L in letters:
result = extend_prefix(w + L, letters.replace(L, "", 1))
results = results | result
extend_prefix('', letters)
return results
print find_words("ABCDEFGH")
내가 그것을 실행하면, 나는 다음과 같은 오류 얻을 :
Traceback (most recent call last):
File "ExtendPrefix.py", line 44, in <module>
print find_words("ABCDEFGH")
File "ExtendPrefix.py", line 41, in find_words
extend_prefix('', letters)
File "ExtendPrefix.py", line 38, in extend_prefix
result = extend_prefix(w + L, letters.replace(L, "", 1))
File "ExtendPrefix.py", line 38, in extend_prefix
result = extend_prefix(w + L, letters.replace(L, "", 1))
File "ExtendPrefix.py", line 35, in extend_prefix
if w in WORDS: results.add(w)
UnboundLocalError: local variable 'results' referenced before assignment
것은 그것은 분명히 결과를 찾을 수 없습니다를 extend_prefix 에의 재귀 호출 왜 그런가요? 어떻게 고칠 수 있습니까?
내가 개를 산책 할 때 결과를 설정하지 않아도된다는 것을 깨달았습니다. 다음에 나는 질문을 게시하기 전에 개를 산책해야합니다! –
나는 여러 번 전에 같은 일을 해왔다. 컴퓨터 화면 앞에 몇 시간 후 나는 종종 내가 배운 것을 처리하기 위해 휴식이 필요하다. :) –