>백엔드 개발 >파이썬 튜토리얼 >경로를 찾으려고 할 때 재귀 Python 함수가 없음을 반환하는 이유는 무엇입니까?

경로를 찾으려고 할 때 재귀 Python 함수가 없음을 반환하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-22 16:56:26533검색

Why Does My Recursive Python Function Return None When Trying to Find a Path?

Python에서 재귀적으로 경로 반환

Python에서는 재귀 함수에서 경로를 반환하려고 할 때 문제가 발생했습니다. 대신 결과에서 None을 얻습니다.

제공된 코드는 파일 시스템 구조를 나타내는 사전을 탐색하여 rqfile에 지정된 파일을 검색합니다. 파일이 발견되면 해당 경로를 반환해야 합니다.

문제의 근본 원인은 사전을 통해 반복하는 동안 함수가 사전이 아닌 값을 발견할 때 else 분기에서 None을 반환하려고 시도한다는 것입니다. 이로 인해 함수가 조기에 종료되어 None이 반환됩니다.

이를 수정하려면 재귀 호출의 결과를 일관되게 반환해야 합니다.

for filename in dictionary.keys():
    path = prefix + [filename]
    if not isinstance(dictionary[filename], dict):          
        if rqfile in str(os.path.join(*path)):
            return str(os.path.join(*path))
    else:
        # Remove unnecessary else block
        return get_path(directory[filename], rqfile, path)

이 코드는 함수가 반환되도록 보장합니다. 발견된 경우 경로, 현재 경로가 찾고 있는 경로가 아닌 경우 재귀 호출의 결과입니다. 또는 rqfile이 현재 경로에 없는 극단적인 경우를 처리할 수도 있습니다.

for filename in dictionary.keys():
    path = prefix + [filename]
    if not isinstance(dictionary[filename], dict):          
        if rqfile in str(os.path.join(*path)):
            return str(os.path.join(*path))
        else:
            return None
    return get_path(directory[filename], rqfile, path)

이러한 해결 방법 중 하나를 구현하면 함수가 요청된 파일의 경로를 올바르게 반환하거나 파일이 있는 경우 None을 반환합니다. 찾을 수 없습니다.

위 내용은 경로를 찾으려고 할 때 재귀 Python 함수가 없음을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.