Como utilizar parâmetros em Python

Tempo estimado de leitura: 5 atas

Está a utilizar uma função e procura passar-lhe valores para ser processada? Bem, se é este o caso, está a tentar passar argumentos para os parâmetros dessa função, de modo a que eles lhe devolvam um valor.

Os parâmetros são apenas valores que estão associados à função. Para cada função, vai ter um ou mais parâmetros que está à espera de processar.

Como resultado, existem várias maneiras de serem criadas, vamos explorar como isto pode ser conseguido.

Passar os argumentos directamente para os parâmetros de uma função

Em muitos casos, os valores dos argumentos a serem processados vão ser passados para os parâmetros da função, que depois executa alguma lógica e devolve um valor.

Formas típicas de isto poder acontecer:

  1. É introduzida uma palavra-passe (o argumento introduzido), a função confirma então se ela é válida ou não.
  2. Poderá ser necessário verificar se um valor introduzido (o argumento introduzido) está acima ou abaixo de um determinado valor. É passado para um parâmetro de função e depois a função faz as verificações necessárias, e confirma o resultado na saída.

Os exemplos acima são dois, mas vejamos isto em acção.

Abaixo temos uma função. O objectivo é aceitar dois argumentos que lhe são transmitidos e realizar um cálculo sobre eles.

O cálculo acontece na variável número 1 ou número 2.

A variável número 1 e a variável número 2 recebem os seus valores dos parâmetros a e b, respectivamente.

O multiplenumérico de linha(1,2) está apenas a chamar a função e a passar os argumentos aos parâmetros a,b que depois os processa e a saída é impressa.

def multiplenumber(a,b):
    number1 = a*2
    number2 = b*3
    print(number1,number2) #===> These values are different to the variables below as they happen as a result of the processing inside the function.

number1=1
number2=2
multiplenumber(number1,number2)
print(number1,number2) #===> These values are outside the function and do not have any relationship to the variables inside the function above, hence are different.

Result:
2 6
1 2

O resultado da peça de lógica acima é chamado "passando por valor", o que significa essencialmente que os dados são passados das variáveis (número 1 e número 2) para os parâmetros da função, mas quando a função é concluída o processamento, não tem impacto nas variáveis originais fora da função.

Isto porque as variáveis originais são imutáveis.

Passar argumentos directamente para parâmetros de função a partir de uma lista

No exemplo acima, conforme delineado, não haverá impacto sobre as variáveis que passam os argumentos para a função, elas permanecem as mesmas.

Por outro lado, se a fonte original dos argumentos for um objecto mutável, terá os seus valores alterados.

Vejamos uma situação em que isto possa ocorrer.

def addnumber(a):
    number=['3']
    a.append(number)
    print(a) #===> This prints the original value of a with the addition of the value 3

number1=[1,2]
addnumber(number1)
print(number1) #===> As number1 is passed to the function, and number1 is allowed to be changed then this will print out the new list value once the function has completed processing.

Result:
[1, 2, ['3']]
[1, 2, ['3']]

Assim, neste caso, como o número1 é uma lista, e esta é mutável, o seu valor mudará uma vez que a função termine o seu processamento.

Isto também pode ser chamado de "passar por referência".

Passagem de argumentos entre funções

Noutro vídeo, concluímos a chamada " Como passar dados entre funções ", que discute como se pode passar os dados entre duas funções e imprimi-los.

Efectivamente, nos argumentos abaixo, os argumentos são nome, país, cidade, e estes valores são passados para funcionarb

def functiona():
    nome = "José" .
    país = "Marte" 
    cidade = "atlantis" 
    #esta captura as três variáveis acima
    nome de retorno,país,cidade
functiona()

def functionb():
    myname,mycountry,mycity = functiona()
    imprimir(myname)
    print(mycountry)
    print(mycity)

funçãob()

Resultado:
Joseph
Marte
atlantis

Passar argumentos usando *args como parâmetro

A fim de compreender isto, antes de olharmos para algum código precisamos de compreender o que são *args?

*args permite essencialmente passar múltiplos argumentos posicionais a uma função, e isto pode variar ao longo do tempo.

Como resultado, não é necessário atribuir os argumentos posicionais a mais do que uma variável. Os *args aceitam todos os argumentos, por muito longos ou curtos que sejam e depois devolvem um valor.

def addnumbers(*args):
    result = 2
    for x in args:
        result = result * x
    return result

print(addnumbers(1,2,3))

Result:
12

Passar argumentos usando **kwargs como parâmetro

Em contraste com o acima exposto, isto processará um conjunto de valores que têm um nome ligado a eles.

Como se pode ver no exemplo anterior, os argumentos passados não tinham qualquer nome associado.

Vejamos com atenção um exemplo. Neste cenário, é atribuído aos argumentos um valor de a,b,c.

def addnumbers(**kwargs):
    result = 2
    for x in kwargs.values():
        result = result * x
    return result

print(addnumbers(a=1,b=2,c=3))

Result:
12

Aqui, é claro que a lógica toma em cada valor de a,b,c processa-o e depois devolve o resultado requerido.

Em essência, tanto *args como **kwargs dão-lhe a mesma resposta, depende apenas de outras partes do seu código e de como está a processar os seus dados.

Por exemplo, nos **kwargs poderia ser que os valores de a,b,c pudessem ser povoados por outras variáveis dentro do programa.

Assim, nesse cenário, a variável que foi transmitida pode mudar e não ser estática.

Então, em resumo:

a. Os argumentos podem ser passados de múltiplas formas para as funções, os parâmetros depois apenas os processam.

b. Os parâmetros também não têm de ser atribuídos a uma variável, eles podem ser lidos através de *args.

c. Por outro lado, é possível ter múltiplos argumentos lidos de uma só vez, utilizando os **kwargs.

Deixe uma resposta

O seu endereço de correio electrónico não será publicado. Os campos obrigatórios estão marcados com *