Ajude nosso projeto a se manter online, faça um PIX de qualquer valor: 029 278 923 85

Argumento Posicional e Argumento Nomeado em Funções Python (keyword arguments)

Neste tutorial de nossa Apostila de Python online grátis, vamos falar sobre duas maneiras diferentes de passar argumentos para funções:
  1. Posicional
  2. Nomeada (keywords arguments)

Tutorial Anterior: Passagem por valor
Importante ler: Como Ganhar Dinheiro Programando em Python


Argumento Posicional em Python

Nos tutoriais e exemplos usados até o momento em nossa apostila, fizemos uma relação entre parâmetros e argumentos.

Por exemplos, se definimos a função:
def fu_bar(par1, par2, par3)

E depois chamamos ela passando os argumentos:
fu_bar(4,5,6)

Quer dizer que, na função fu_bar, os parâmetros receberão os seguintes valores:
  • par1 = 4
  • par2 = 5
  • par3 = 6

Ou seja, na ordem. O primeiro parâmetro recebe o primeiro argumento, o segundo parâmetro recebe o valor do segundo argumento, e assim sucessivamente.

Isso é chamado de argumento posicional, por motivos óbvios. E existe somente essa maneira de relacionar os valores de parâmetros com os valores enviados como argumentos.

Porém, o Python é uma linguagem absurdamente flexível e poderosa, então, existem mais maneiras de um parâmetro receber um valor de argumento, quando se usa vários.

Argumentos Nomeados em Python

Para ilustrar melhor, vamos criar uma função que recebe 3 notas diferentes: mat, fis e qui, notas de um aluno em Matemática, Física e Química e exibe sua média:



def media(mat,fis,qui):
    media = (mat+fis+qui)/3
    print("Media: ", media)


Ao chamar essa função, podemos passar os seguintes argumentos:
media(8, 9, 10)

Sabemos que as notas serão:
  • mat = 8
  • fis = 9
  • qui = 10

Porém, existe uma outra maneira de passar os argumentos, em outra ordem, basta nomear o argumento com o nome do parâmetro que desejar, veja:
  • media(qui=10, mat=8, fis=9)

Prontinho. O resultado é exatamente o mesmo.
As maneiras seguintes também exibem o mesmo resultado:
  • media(qui=10, fis=9, mat=8)
  • media(fis=9, mat=8, qui=10)

Ou seja, não importa a ordem se você usar argumentos nomeados!
Aliás, dá até pra misturar argumentos nomeados com argumentos posicionais.

Regra para Argumentos Nomeados e Posicionais

O que acha que vai ocorrer se usar:
  • media(8, fis=9, qui=10) ?

O que diz sua intenção? Lembre-se: Python é uma linguagem bem intuitiva.
Sim: o 8 vai ser atribuído ao primeiro parâmetro, que na definição da função é mat, e vai ter o mesmo resultado.



Mas existe uma importante regra que deve ser obedecida:
  • Argumentos posicionais devem vir antes
Se fizer:
media(8, fis=9, 10)

Vai dar erro. Todos os argumentos posicionais devem vir antes. No caso, tentamos usar no primeiro argumento e no terceiro, vai dar erro, não pode!

Porém você pode fazer:
media(8, 9, qui=10)

Os argumentos que não são nomeados, são automaticamente chaveados de maneira sequencial, posicional, com a ordem dos parâmetros. Bem intuitivo, não acha?

Nenhum comentário:

Postar um comentário