Funçõ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:
12345678910111213141516def 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))
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.
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.
- Inicializar a variável
countcom o valor 1, pois os identificadores começam em 1. - Utilizar um laço
whileinfinito para gerar identificadores continuamente. - Utilizar
yieldpara retornar o identificador atual no formatof"ID_{count}". - Incrementar
countem 1 após cada iteração. - Inicializar o objeto gerador
id_genchamandoid_generator().
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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?
Awesome!
Completion rate improved to 4.17
Funçõ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:
12345678910111213141516def 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))
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.
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.
- Inicializar a variável
countcom o valor 1, pois os identificadores começam em 1. - Utilizar um laço
whileinfinito para gerar identificadores continuamente. - Utilizar
yieldpara retornar o identificador atual no formatof"ID_{count}". - Incrementar
countem 1 após cada iteração. - Inicializar o objeto gerador
id_genchamandoid_generator().
Solução
Obrigado pelo seu feedback!
single