Diferença entre o rendimento do Python e o retorno do Python

A declaração de rendimento é usada para definir geradores em Python. Portanto, antes de entendermos exatamente o que o rendimento produz, precisamos entender primeiro o conceito de geradores. Os geradores têm um papel significativo no Python e, se você gosta muito da programação do Python, é provável que já tenha trabalhado com geradores do Python. Geradores são usados ​​para criar iteradores em Python, mas com uma abordagem diferente.

A Python Generators são funções que produzem uma sequência de resultados e podem ser pausadas e retomadas dinamicamente. Os geradores foram adicionados pela primeira vez como um recurso opcional no Python 2.2 e padronizados no Python 2.3. Embora eles fossem poderosos o suficiente, as funções dos geradores foram significativamente aprimoradas no Python 2.5.

Quando os geradores foram adicionados novamente no Python 2.2, ele introduziu uma nova palavra-chave “yield” para compatibilidade com versões anteriores, para a qual precisamos importar geradores do módulo _future_ para usá-los. Isso foi alterado na versão 2.3 do Python quando os geradores se tornaram padrão e não era mais necessário.

A instrução yield suspende a execução de uma função e envia um valor de volta para o chamador, enquanto salva o estado e retoma mais tarde, o que significa que todo o gerador em si ainda pode ser retomado depois que o valor de retorno for obtido. Uma declaração de retorno finaliza a execução da função e envia um valor de volta ao chamador. Sem ele, sua função não retorna nada. Vamos dar uma boa olhada em quando usar yield e quando usar return em Python para entender melhor a diferença entre os dois.

O que é Python Yield?

A declaração de rendimento é usada nos geradores Python para substituir o retorno de uma função para enviar um valor de volta ao seu chamador sem destruir as variáveis ​​locais. Para entender melhor qual o papel da declaração de rendimento na programação Python, você precisa entender o que são os geradores.

As funções do gerador são produzidas por definição, assim como as funções regulares, mas contêm uma instrução "yield". Isso começa com a palavra-chave "yield", que especifica o objeto gerador a ser retornado ao chamador. Um gerador é uma função especial no Python que retorna um objeto gerador ao chamador em vez de um valor de dados. A palavra-chave yield possui a capacidade exclusiva de interromper a execução da função, salvar o estado e continuar posteriormente.

O que é o Python Return?

A declaração de retorno, diferente da declaração de rendimento, sai de uma função, devolvendo um valor ao seu chamador. As funções retornam um valor aos chamadores e as que são de natureza mais procedural não explicitamente retornam nada. Embora uma função possa ter várias instruções de retorno, apenas uma delas pode ser chamada para qualquer chamada específica da função.

Normalmente, uma instrução de retorno aparece no final de um bloco de função para retornar o resultado final da execução de todas as instruções contidas nessa função. No entanto, também pode aparecer anteriormente no bloco de funções para interromper a execução de todas as instruções subseqüentes nesse bloco. Isso retoma imediatamente a execução do programa no chamador. Quando nenhum valor é especificado, o tipo de objeto de retorno equivalente em Python é "None".

Diferença entre Python Yield e Return

  1. Noções básicas relacionadas ao rendimento e retorno do Python

    • A declaração de rendimento é usada nos geradores Python para substituir o retorno de uma função para enviar um valor de volta ao seu chamador sem destruir as variáveis ​​locais. Um gerador é uma função especial no Python que retorna um objeto gerador ao chamador em vez de um valor de dados.
    • A declaração de retorno, diferente da declaração de rendimento, sai de uma função, devolvendo um valor ao seu chamador. Normalmente, uma instrução de retorno aparece no final de um bloco de função para retornar o resultado final da execução de todas as instruções contidas nessa função. Todas as funções retornam um valor e, se não houver nenhum valor especificado, ele retornará "Nenhum".
  1. Geradores vs. Funções no rendimento e retorno do Python

    • A declaração de rendimento é usada explicitamente com geradores Python. Sintaticamente, um gerador é uma função com uma declaração de rendimento. Embora uma função possa ter várias instruções de retorno, apenas uma delas pode ser chamada para qualquer chamada específica da função.
    • Diferentemente de uma função que retorna apenas uma vez, os geradores podem interromper a execução e gerar resultados intermediários. Cada gerador é definido como uma função, mas, em vez da palavra-chave de retorno, a palavra-chave yield é usada dentro do bloco de funções para indicar que o valor de retorno é apenas temporário e que o gerador inteiro pode ser retomado mesmo após a obtenção do valor de retorno.
  1. Execução do rendimento e retorno do Python

    • A instrução de retorno finaliza a execução de uma função e envia de volta um valor ao seu chamador. As funções retornam um valor aos chamadores e as que são de natureza mais procedural não explicitamente retornam nada. O que basicamente faz é sair de uma função e destruir todos os valores locais dentro.
    • A declaração de rendimento, por outro lado, substitui o valor de retorno de uma função para suspender sua execução e envia valor de volta ao seu chamador sem destruir as variáveis ​​locais. No entanto, diferentemente da função de retorno, yield retoma a execução da função de onde foi deixada.

Rendimento do Python x Retorno: Gráfico de comparação

Resumo do rendimento e retorno do Python

Sintaticamente, yield é uma palavra-chave que pode ser usada como a palavra-chave return, exceto que a instrução return encerra a execução da sua função e envia um valor ao seu chamador. A funcionalidade da declaração de retorno é receber entradas e retornar algo ao chamador. Ao contrário de um retorno, a declaração de rendimento é explicitamente usada para definir geradores, substituindo o valor de retorno de uma função para suspender sua execução, mantendo as variáveis ​​locais intactas, enquanto a declaração de retorno destrói todas as variáveis ​​locais dentro.