Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Funções Geradoras | Especificação do Valor de Retorno da Função
Tutorial de Funções em Python

bookFunções Geradoras

Uma função geradora é um tipo especial de função que utiliza a palavra-chave yield em vez de return para gerar uma sequência de valores. Quando uma função geradora é chamada, ela retorna um objeto iterador, que pode ser percorrido para recuperar os valores um de cada vez.
A principal vantagem das funções geradoras é a sua eficiência de memória. Funções geradoras produzem valores sob demanda, conforme necessário, em vez de gerar toda a sequência de uma só vez. Isso as torna eficientes em termos de memória, especialmente ao lidar com grandes conjuntos de dados ou sequências infinitas.

Considere um exemplo simples de gerador. Esta função produz logins um por um a partir da lista fornecida:

12345678910111213141516
def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
copy

O princípio de um gerador é permitir que valores sejam retornados um de cada vez utilizando a palavra-chave yield, sem armazená-los todos na memória ao mesmo tempo. No nosso exemplo, o gerador unique_logins_from_list percorre a lista de logins, retornando cada um ao yield e pausando naquele ponto. Quando next() é chamado, o gerador retoma de onde parou, fornecendo valores de forma eficiente sem precisar armazenar toda a lista na memória simultaneamente. Isso torna os geradores particularmente úteis para lidar com grandes conjuntos de dados ou fluxos de dados.

Tarefa

Swipe to start coding

Gerar IDs de usuário únicos utilizando uma função geradora. A função id_generator() deve produzir continuamente identificadores como "ID_1", "ID_2", etc.

  1. Inicializar a variável count com o valor 1, pois os identificadores começam em 1.
  2. Utilizar um laço while infinito para gerar identificadores continuamente.
  3. Utilizar yield para retornar o identificador atual no formato f"ID_{count}".
  4. Incrementar count em 1 após cada iteração.
  5. Inicializar o objeto gerador id_gen chamando id_generator().

Solução

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 4
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain how the generator resumes execution after each yield?

What happens if I call next() more times than there are items in the list?

Can you show a real-world scenario where using a generator is better than a regular function?

close

Awesome!

Completion rate improved to 4.17

bookFunções Geradoras

Deslize para mostrar o menu

Uma função geradora é um tipo especial de função que utiliza a palavra-chave yield em vez de return para gerar uma sequência de valores. Quando uma função geradora é chamada, ela retorna um objeto iterador, que pode ser percorrido para recuperar os valores um de cada vez.
A principal vantagem das funções geradoras é a sua eficiência de memória. Funções geradoras produzem valores sob demanda, conforme necessário, em vez de gerar toda a sequência de uma só vez. Isso as torna eficientes em termos de memória, especialmente ao lidar com grandes conjuntos de dados ou sequências infinitas.

Considere um exemplo simples de gerador. Esta função produz logins um por um a partir da lista fornecida:

12345678910111213141516
def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
copy

O princípio de um gerador é permitir que valores sejam retornados um de cada vez utilizando a palavra-chave yield, sem armazená-los todos na memória ao mesmo tempo. No nosso exemplo, o gerador unique_logins_from_list percorre a lista de logins, retornando cada um ao yield e pausando naquele ponto. Quando next() é chamado, o gerador retoma de onde parou, fornecendo valores de forma eficiente sem precisar armazenar toda a lista na memória simultaneamente. Isso torna os geradores particularmente úteis para lidar com grandes conjuntos de dados ou fluxos de dados.

Tarefa

Swipe to start coding

Gerar IDs de usuário únicos utilizando uma função geradora. A função id_generator() deve produzir continuamente identificadores como "ID_1", "ID_2", etc.

  1. Inicializar a variável count com o valor 1, pois os identificadores começam em 1.
  2. Utilizar um laço while infinito para gerar identificadores continuamente.
  3. Utilizar yield para retornar o identificador atual no formato f"ID_{count}".
  4. Incrementar count em 1 após cada iteração.
  5. Inicializar o objeto gerador id_gen chamando id_generator().

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 4
single

single

some-alt