Eventualmente DifeualDades de algumas Pessoas EM USAR Coreletamente Alguma Função, Seja Porte Alguma Deveria Ser Exputada Isolaadeamente, E Utilizado Prória Variável Que Foi Passada Como Argento Soormente, Seja Poique Deveria SE Atribuir O Retorno Da Função Alguma Variável, E Utilizar Essa Nova Variável. Нет Python, Essa Diferença Pode Ser ServaDADA NOS MÉTODOS DAS LISTAS Сортировать
е обратный
пункт как funções отсортировано
е Реверсированные
, Que São Axampledas Com Padrões Diferentes, на месте E Cópia de Valor ОБЕСПЕЧЕНИЕ. Assim Pretendo Discutirs Esses Dois Padrões de Funções, Comentando Qual A a Diferença E o Melhor Caso de Alokação de Cada Padrão.
Função de Exemplo
Para демонстрация Como esses Padrões Funcionam, Será Advancedado UMA Função Que Celemer Bey Bema Lista E Calcula o Dobro Dos Valores Dessa Lista. Exemplo:
entrada = [5, 2, 8, 6, 4] # Execução da função resultado = [10, 4, 16, 12, 8]
Função COM на месте
Ideia do Padrão на месте É alterar Prória Variável Resepmida Pela Função (OU O o Próprio Objeto, Caso Esteja lidando com orientação objetos). Neste Caso, Бастарию Калькулярное o Dobro Do Valor de Cada Posição da lista, e sobrecrever a posição com seu Resulardado. Exemplo:
from typing import List def dobro_inplace(lista: List[int]) -> None: for i in range(len(lista)): lista[i] = 2 * lista[i] valores = [5, 2, 8, 6, 4] retorno = dobro_inplace(valores) print(f'Variável: valores | Tipo: {type(valores)} | Valor: {valores}') print(f'Variável: retorno | Tipo: {type(retorno)} | Valor: {retorno}')
Регистрация Da Execução:
Variável: valores | Tipo:| Valor: [10, 4, 16, 12, 8] Variável: retorno | Tipo: | Valor: None
COM Essa Execução é Values HeadaR Que OS Valores DA LISTA FORAM ALTERADOS, E que o Retorno da Função é nulo ( Нет
), Оу Суджа, Фунсиано ALTEROU PROPRIA LISTA PASSADA COMO ARDUCTO. OUTRO PONTO Г Ваственнит Серсадор-É Asinanatura Da Função (Tipo Dos Argugeos E Do Retorno da Função), Que Release UMA Lista De Inteiros E NãO TEM Retorno Ou É Nulo ( None
). Dessa Forma Embora Seja Vishível Chamar Essa Função Diretamente Quando Está Se Informando Os Argentos de Outra Função, Como Печать (dobro_inplace (валор))
, фанчион Печать
приговор Нет
E Não Lista Como ArgageO.
Função Com Com Cópia de Valor
IDeia do Padrão Cópia de Valor é КРИАР УММА КОЮЗИЯ ДО Валир-Пассадо Como ArcugeO E Retornar Essa Cópia, SEM ALTERAR A CRIANDO EMOT CREECTA (OU CRIANDO UM NOVO OBJETO, NO CASO de Orientação a objetos). Neste Caso, Eubsário КРИАР УМА NOVA LISTA E ADICIONAR NELA OS Valores Calculados. Exemplo:
from typing import List def dobro_copia(lista: List[int]) -> List[int]: nova_lista = [] for i in range(len(lista)): nova_lista.append(2 * lista[i]) return nova_lista valores = [5, 2, 8, 6, 4] retorno = dobro_copia(valores) print(f'Variável: valores | Tipo: {type(valores)} | Valor: {valores}') print(f'Variável: retorno | Tipo: {type(retorno)} | Valor: {retorno}')
Регистрация Da Execução:
Variável: valores | Tipo:| Valor: [5, 2, 8, 6, 4] Variável: retorno | Tipo: | Valor: [10, 4, 16, 12, 8]
Com Essa Execução é Verysível Survear Que A Variável Валир
Contura Com OS Valores que antes a os expução da função, e a variável Retorno adresenta uma lista com os dobros, ou seja, função não altera a lista Passada Como Argento E Retorna UMA NOVA LISTA COM ОС Валоревших калькуладос. Обсадить Ассинатуру да Фунчано, ELA REACEBE UMA LISTA de Inteiros E Retorna UMA Lista de Inteiros. Isso Premate Chamar Essa Função Diretamente Nos Arguceos Para Outra Função, Como Печать (Dobro_copia (Valores))
Nesse Caso A Função Печать
CENBERIA A BISTA DE DOBROS COMO ARDUCTO. Porém Caso O Retorno Da Função Não Seja Armazenado, Parecerá que a Função Não Fez Nada, Ou Não Funcionous. Então Em Alguns Casos, QuAnto O Valor Antheore Não Mais Numberio, Pode-Se Reatribuir O Retorno Da Função Própria Variável Passada Como Aracgueto:
valores = dobro_copia(valores)
Função Híbrida
AINDA É ASSIVEL MESCLAR OS DOIS PADRõES de Função, Alterando O Valor Passado E Retornando-O. Exemplo:
from typing import List def dobro_hibrido(lista: List[int]) -> List[int]: for i in range(len(lista)): lista[i] = 2 * lista[i] return lista valores = [5, 2, 8, 6, 4] retorno = dobro_hibrido(valores) print(f'Variável: valores | Tipo: {type(valores)} | Valor: {valores}') print(f'Variável: retorno | Tipo: {type(retorno)} | Valor: {retorno}')
Регистрация Da Execução:
Variável: valores | Tipo:| Valor: [10, 4, 16, 12, 8] Variável: retorno | Tipo: | Valor: [10, 4, 16, 12, 8]
Nesse Caso, Poode-Se Apenas Chamar A Gunção, Como Também Utilizá-la Nos Arguceos de itilras Funções. Porém Para Se Ter Os Valores Originais, Deve-Sy Fazer UMA Cópia Malue Malue Andes de Executar A Tunção.
Exemplo Na Biblioteca Padrão
NA BIBLITECA PADRãO DO PYTHON, ESTEM OS MÉTODOS Сортировать
е обратный
que seguem o padrão на месте , Е, как Funções отсортировано
е Реверсированные
Que Seguem o Padrão Cópia de Valor, Podendo Ser Utilizados Para Ordenar E Inverter OS Valores de UMA Lista, POR Exemplo. QuANDO NãAO MAIS TRUSIORIO UMA Cópia DA LISTA COM ОРИГИНАЛЬНОГО ОРИГИНАЛЬНОГО, É FUNCHELIVEL UTILIZAR Funções на месте Квер Альтерэм Própria Lista, e Como Não Criam UMA Cópia Da Lista, Утилизам Менос Менория. Exemplo:
valores = [5, 2, 8, 6, 4] valores.sort() valores.reverse() print(valores)
SE для BeautaRio Manter UMA Cópia Da Lista Inalterada, Deve-Se Optar Pelas Funções de Cópia de Valor. Exemplo:
valores = [5, 2, 8, 6, 4] novos_valores = reversed(sorted(valores)) print(novos_valores)
Porém Esse Exemplo Cria Duas Cópias DA LISTA, UMA EM CADA FUNCHãO. PARA CRIR APENAS UMA Cópia, Pode-Se Misturar Funções на месте COM Cópia de Valor. Exemplo:
valores = [5, 2, 8, 6, 4] novos_valores = sorted(valores) novos_valores.reverse() print(novos_valores)
Também Vale Surstar Que Algumas Utilizações Dessas Funções Podem Dar a Impressão de que elas não funcionaram, como:
valores = [5, 2, 8, 6, 4] sorted(valores) print(valores) # Imprime a lista original, e não a ordenada print(valores.sort()) # Imprime None e não a lista
Рассматривать
NEM SEMPER ESSIVEL UTILIZAR O Padrão Desejado, Строки Нет Python ( str
) São Imutáveis, логотип Тодас как Funções que Manipulam Elas Seguiram o Padrão Cópia de Valor, E Para Automos Tipos, Pode Ocorrer de Só Sósiir Funções на месте , Sendo Nebsário Fazer UMA Cópia Malue Malue Antes de Chamar An Função, Caso Burnio. PARA SABER QUAL PADRãO A Função Advailara, É Thumbio Consultar Sua Documentação, OU Verifeanndo Sua Assinatura, Embora Ainda Tossa Escomeir Uma Dúbida Entre Cópia de Valor E Hibrida, Visto Que A Assinatura Dos Dois Padrões São Iguais.
OS Exemplos Aqui Dados São Didáticos. Caso Deseja-Se Ordenar de Forma Reversa, Tanto O Método Сортировать
квантовой фанчион отсортировано
Podem Cember Como ArgageO Обратный = Правда
, E Assim Já Fazer A ordenação Reversa. Assim Como é Возможность CRAR UMA NOVA LISTA JA COM OS Valores , SEM Precisar Adicionar Malue Malue Malue Port Port, Como OS Exemplos:
valores = [5, 2, 8, 6, 4] partes_dos_valores = valores[2:] novos_valores = [2 * valor for valor in valores]
Оригинал: “https://dev.to/acaverna/funcoes-in-place-ou-copia-de-valor-41hl”