Рубрики
Без рубрики

Funções на месте OU Cópia de Valor

Eventualmente Surveo Difeuldades de Algumas Pessoas EM USAR Coreetamente Alguma Função, Seja Prorque … Теги с кодом, Питоном, Бразильской.

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”