Coletânea Python do ZERO às Redes Neurais Artificiais
Parâmetros por Justaposição ou Nomeados
Uma das primeiras particularidades a serem consolidadas quando estamos avançando com nossos entendimentos sobre funções são sobre seus parâmetros, no sentido de que os mesmos podem ser atribuídos e manipulados por justaposição ou de forma nomeada conforme a necessidade.
Quando estamos aprendendo Python normalmente desconhecemos essas características pois em Python tudo é muito automatizado, de forma que quando criamos nossas primeiras funções parametrizadas o interpretador, em sua leitura léxica, automaticamente trata dos parâmetros conforme o contexto da função.
Nada melhor do que partir para prática para entender tais conceitos. Então, inicialmente, quando estamos falando de justaposição dos parâmetros de uma função estamos simplesmente falando da ordem aos quais estes parâmetros foram declarados.
Pela sintaxe Python toda função tem um nome com o prefixo def e um campo representado por parênteses onde podemos ou não definir parâmetros para nossa função.
Quando estamos criando nossas próprias funções temos de prezar pela legibilidade do código, contextualizando, uma boa prática de programação é justamente criar funções com nomes intuitivos, assim como quando houverem parâmetros, que os mesmos possuam nomes lógicos de fácil entendimento.
Voltando ao âmbito da justaposição em nosso exemplo, note que criamos uma função pessoa1( ) que recebe como parâmetros nome, idade e função, respectivamente.
A chamada justaposição se dá porque da maneira com que foram declarados estes parâmetros, seguindo uma ordem sequencial lógica, no momento de você atribuir algum dado/valor aos mesmos, a ordem de atribuição irá ser respeitada pelo interpretador.
Em outras palavras, ao criar uma variável que chame essa função, por padrão o primeiro dado que você repassar substituirá o primeiro atributo da função, neste caso: nome, o segundo atributo substituirá idade e logicamente o terceiro atributo repassado para essa função substituirá o terceiro atributo funcao.
Isto se dá porque o interpretador associará a ordem dos espaços alocados para parametrização com a ordem dos dados repassados parametrizando a função. Porém, é perfeitamente possível alterar essa forma de parametrizar uma determinada função, como veremos nos tópicos subsequentes.
Outra possibilidade que temos é trabalhar com os chamados parâmetros nomeados, onde no momento da declaração de tais parâmetros já atribuímos um dado padrão, que pode ou não ser substituído pelo usuário.
Raciocine que todos parâmetros que criamos para uma função devem ser substituídos por algum dado/valor e ser funcionais.
Não é recomendado se criar parâmetros além dos que serão realmente usados pela função, usar dessa prática pode levantar algumas exceções ou gerar erros de interpretação.
Pensando nisso, uma prática comum é, quando temos um determinado parâmetro que possa ser alterado ou não pelo usuário, já no momento da declaração estipular um dado/valor default para o mesmo.
Repare no exemplo, novamente criamos a função pessoa( ), onde seu primeiro parâmetro é nome, seu segundo parâmetro é idade = 18 e seu terceiro parâmetro agora é funcao = ‘técnico’.
A partir do momento que temos essa função criada dessa forma, supondo que o usuário fornecesse apenas um dado para o primeiro parâmetro nome, os demais iriam usar dos dados padrão declarados, 18 e ‘técnico’, respectivamente repassados nas máscaras de substituição de idade e funcao.
Concluindo essa linha de raciocínio, usando da mesma função do exemplo anterior, vamos realizar uma parametrização tanto nomeada quanto justaposta.
Note que para isso é criada uma variável p1 que chama a função pessoa1( ), onde o primeiro elemento colocado entre os parênteses é a string ‘Fernando’, que por justaposição irá substituir qualquer dado alocado ou existente em nome.
Em seguida declaramos que funcao agora tem como atributo a string ‘gerente’.
Por fim, como idade não foi parametrizada, no momento de seu uso ela fará uso de seu dado padrão 18.
Rodando essa função as devidas máscaras de substituição terão seus dados sobrescritos pelos parâmetros repassados, e como esperado, é exibida uma mensagem pela função print( ) do corpo da função.
Apenas revisando tais conceitos, quando criamos uma determinada função, criamos um número específico de parâmetros conforme a necessidade.
Tanto o nome da função quando de seus parâmetros deve ser um nome lógico e intuitivo, de fácil localização e entendimento por parte do desenvolvedor.
A ordem em que repassamos dados como parâmetros para nossa função, por padrão a parametrizará na mesma ordem de declaração.
É possível no momento da declaração dos parâmetros de uma função já declarar algum dado manualmente que pode ou não ser substituído conforme o contexto.
Por fim ao chamar uma determinada função é possível manualmente especificar qual parâmetro receberá um determinado dado, apenas fazendo referência ao seu nome.