"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que minha função recursiva retorna `nenhum 'em Python?

Por que minha função recursiva retorna `nenhum 'em Python?

Postado em 2025-03-23
Navegar:439

Why Does My Recursive Function Return `None` in Python?

função Recursiva retorna nenhum no python resolvido

Ao tentar retornar um caminho em uma função recursiva, um problema pode surgir onde "nenhum" é retornado em vez. Isso pode ser resolvido, garantindo que o resultado recursivo seja retornado. Aqui está uma explicação do porquê e como corrigi -lo:

no código fornecido:

def get_path(dictionary, rqfile, prefix=[]):
    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:
            get_path(directory[filename], rqfile, path)

A chamada recursiva termina com get_path (diretório [nome do arquivo], rqfile, caminho) sem retorno. Isso significa que, se o rqfile não estiver em str (os.path.join (*caminho)), a função termina sem retornar explicitamente nada, resultando em um valor de retorno padrão de nenhum. Retornar get_path (diretório [nome do arquivo], rqfile, caminho)

ao retornar sempre no final da função, se é ou não uma chamada recursiva, garantimos que um retorno seja explicitamente dado, impedindo que não seja devolvido. Deve retornar nos dois casos: quando o rqfile está no caminho e quando não é, e não há necessidade de um ramo para acabar com a função.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3