Ver Feed RSS

root@blog:/# chmod o+r *

[Curso de Python] Funções com Argumentos e Valores Padrões

Avalie este Post de Blog

Antes de prosseguir leia os artigos anteriores aqui.


No último post sobre funções com argumentos nomeados, eu mostrei como referenciar argumentos utilizando como base o nome designado a este argumento. Hoje vamos ver como utilizar valores padrões, ou pré-definidos, em um argumento.


Funções com Argumentos e Valores Padrões


Muitas vezes você precisa criar uma função quase idêntica a outra, a única diferença é que uma recebe argumentos enquanto a outra não. O Python nos oferece um recurso interessante para evitar a criar de duas funções com comportamentos similares. Os valores padrões fazem um argumento se tornar opcional. Vamos a um exemplo prático, precisamos de uma função que incremente um numero. Caso não especificado um "valor de incremento", o número será incrementado com o "valor de incremento" igual a um. Ou seja, o comportamento da função deve ser o seguinte:

Código :
>>> incrementa(10)
11
>>> incrementa(2)
3
>>> incrementa(4,2)
6
>>> incrementa(7,10)
17
Em resumo essa função deve somar dois numeros. Como podemos ver o segundo argumento é opcional, caso informado o primeiro número deve ser somado ao segundo, caso não seja informado o segundo número, o primeiro número deve ser somando a um valor fixo que, conforme especificado, é 1. Vamos ao código:

Código PHP:
def incrementa(num1num2=1):
    return 
num1+num2 
O valor padrão é definido na declaração da função. Ao declarar um argumento com um valor inicial (num=2) ele se torna opcional, podendo ou não ser especificado. Vamos a outro exemplo: Criar uma função que conte o numero de caracteres que uma frase tem. O argumento opcional é uma letra e, caso seja especificado, a função deve contar as ocorrências dessa letra:
Código PHP:
def conta_caracteres(fraseletra=None):
    if 
letra is None:
        
cont 0
        
for l in frase:
            
cont cont 1
    
else:
        
cont 0
        
for l in frase:
            if 
== letra:
                
cont cont 1
    
return cont 
Como podemos ver, eu iniciei o argumento letra como None. Ao inciar a função verifico se o valor padrão de letra foi alterado (if letra is None), caso negativo, eu conto o número de letras na frase. Caso a letra tenha sido especificado (else) eu conto o número de ocorrências da letra. Antes que alguém fale, eu sei que existem funções prontas que fazem isso, eu estou utilizando apenas como exemplo. Abaixo a execução desse código:
Código :
>>> conta_caracteres('esta e uma frase')
16
>>> conta_caracteres('esta e uma frase', 'a')
3
>>> conta_caracteres('esta e uma frase', 'f')
1
>>> conta_caracteres('esta e uma frase', ' ')
3
>>>
Boa semana a todos e até a próxima...

Atualizado 01-09-2010 em 09:53 por Magnun

Categorias
Python , Artigos , Artigos , Cursos , Curso de Python

Comentários

  1. Avatar de PEdroArthurJEdi
    E aí, Magnum, beleza?

    Não lembro se você já falou sobre orientação à objetos, mas queria lembrar que argumentos padrões é a forma que Python tem de prover sobrecarga de métodos.

    Aí vai a versão funcional do conta_caracteres:
    Código PHP:
    def contac(fraseletras=[ ]):
        return 
    len(frase) if len(letras) == \
               else 
    reduce(lambda x,y+ (y in letras), frase0
    Abraço! Continue o bom trabalho
  2. Avatar de Magnun
    E ae PEdroArthurJEdi,

    Ainda não falei de OO, ainda tenho um longo caminho até lá :). Cara, mandou muito bom com o reduce!
  3. Avatar de fabraga
    quero aprender!!! :)

+ Enviar Comentário