Nesta aula estudaremos o conceito de Parâmetros Nomeados e Parâmetros Posicionais. Estudaremos a diferença entre os conceitos e suas características, bem como quando utilizar cada uma das definição. |
ARGUMENTOS NOMEADOS (KEYWORD ARGUMENTS)
Em Python é possível invocarmos funções passando os argumentos de forma posicional ou então, através da associação chave-valor.
Argumento posicional é o nome utilizado para a passagem de valores onde cada valor estara na ordem conforme implementado na função.
Argumento nomeado é a passagem de valores fazendo associação com o nome do parâmetro e o valor que está sendo enviado.
Lembre-se que argumento e parâmetro são nomes diferentes para conceitos iguais. O termo argumento é utilizado quando determinada função está sendo invocada, logo, dizemos que a função tem definido x argumentos. Parâmetro é o nome utilizado quando estamos manipulando a função propriamente dita, logo, dizemos que a função declarou x parâmetros. |
Considere o trecho de código a seguir:
def minha_func(a, b, c):
print(a, b, c)
# invocando a função minha_func() passando valores de forma posicional
minha_func(1, 2, 3)
# invocando a função minha_func() passando valores de forma chave-valor
minha_func(a=1, b=2, c=3)
# invocando a função minha_func() passando valores de forma chave-valor
# porém, fora de ordem
minha_func(a=1, c=3, b=2)
No código acima, declaramos uma função de nome minha_func(a, b, c)
e definimos 3 parâmetros de nomes, (a, b, c)
. Em seguida, invocamos a função minha_func()
2 vezes. Na primeira, passamos 3 valores na ordem em que estes foram definidos, ou seja, 1, 2, 3
serão, automaticamente definidos, para os parâmetros a, b e c respectivamente. Em seguida, invocamos a função novamente, porém, definimos os parâmetro de maneira nomeada, isto é, a cada parâmetro associamos determinado valor.
Argumento nomeado é um recurso que permite a passagem de valores pela associação chave-valor e assim, os mesmos não precisaram estar dispostos numa ordem pre-estabelecida, até porque, o Python receberá um dicionário que contém o nome e o valor de cada parâmetro.
Se analisarmos a forma que passamos valores e as estruturas estudadas, é possível perceber que a passagem de parâmetros posicionais, nada mais é do que o envio de uma tupla <{filename}../curso-de-python/0052_tuplas-python.rst>, enquanto que a passagem de valores nomeados, é o envio de um dicionário <{filename}../curso-de-python/0061_introducao-aos-dicionarios-python.rst>.
A única regra em relação a passagem de valores através de parâmetros nomeados e parâmetros posicionais, é que devemos escolher uma das formas de envio, isto é, ou utilizamos parâmetros posicionais ou então, parâmetros nomeados.
EXCEÇÃO À REGRA
É possível invocar uma função passando os primeiros argumentos de forma posicional e o restante, de forma nomeada. Porém, a regra para trabalhar dessa maneira é: argumentos posicionais, em seguida, argumentos nomeados. Tomemos como exemplo o código a seguir:
def minha_func2(a, b, c, d):
print(a, b, c, d)
minha_func(1, 2, d=4, c=3)
No código acima, definimos uma função semelhante a estudada no primeiro exemplo, porém, que contém mais um argumento de nome d. Em seguida, invocamos a função e, para os 2 primeiros argumentos, enviamos valores de maneira posicional. Já, para os 2 argumentos finais, de nomes c e d, passamos valores associando o nome do parâmetro com o respectivo valor.
EXEMPLO FEITO EM AULA
# coding: utf-8
# =================
# = eXcript.com =
# =================
# ARGUMENTOS POSICIONAIS E ARGUMENTOS NOMEADOS
def dados_pessoais(nome, sobrenome, idade, sexo):
print("Nome: {}\nSobrenome: {}\nIdade: {}\nSexo: {}"
.format(nome, sobrenome, idade, sexo))
dados_pessoais("Cláudio", sobrenome="Rogério", idade=30, sexo=True)
# dados_pessoais(idade=30,
# sexo=True,
# sobrenome="Carvalho",
# nome="Cláudio"
# )
Tags curso, python, função, parâmetro, argumento, argumento posicional, argumento nomeado, blog
Comentários
comments powered by Disqus