Funções II

Diferentes formatos para os argumentos

Willian Pessoa
Reflexão Computacional
3 min readJul 12, 2019

--

Continuação de:

Introdução

Na seção anterior, aprendemos que funções podem ter argumentos, os quais são declarados em ordem com cada um possuindo um nome. Existem outras formas de declarar e utilizar argumentos de funções. Veremos algumas destas formas nesta seção.

Argumentos opcionais

Podemos flexibilizar as chamadas de funções de uma forma que o usuário não precise passar todos os argumentos da função. No entanto, para tornar os argumentos opcionais, precisamos definir um valor padrão para cada argumento.

Vejamos o exemplo a seguir:

Especificando os argumentos

No exemplo anterior, passamos os argumentos na chamada da função funcna mesma ordem em que os declaramos. Entretanto, podemos especificar quais argumentos queremos passar sem necessariamente passá-los na ordem que foram declarados.

Quantidade de argumentos arbitrária

Algumas funções podem não definir diretamente a quantidade de argumentos que necessitam, permitindo que sejam passados uma quantidade arbitrária de argumentos. Estes argumentos podem ser “empacotados” numa tupla ou em um dicionário.

Empacotando argumentos em uma tupla

Para possibilitarmos uma função receber uma sequência de argumentos, devemos adicionar um argumento contendo um asterisco (*) no início de seu nome.

Empacotando argumentos em um dicionário

Para o empacotamento ser feito em formato de dicionário, o argumento deve conter dois asteriscos (**) no início de seu nome. Cada argumento também deve ser passado indicando sua chave no formato chave=<valor>.

Asteriscos para desempacotar

Também podemos utilizar os asteriscos para desempacotar uma sequência (tupla ou lista), como também um dicionário.

  • Desempacotando uma lista com três elementos para o método range():
  • Desempacotando um dicionário na chamada de uma função:

Conclusão

Agora, sabemos todos os possíveis formatos que nossos argumentos podem assumir. Isso nos ajudará não só na parte de criação de funções, mas também no uso de funções prontas nos módulos e frameworks que utilizaremos.

--

--