| Linha 36: | Linha 36: | ||
>>> def soma(x,y): | |||
... return x + y | |||
... | |||
def | >>> def diferenca(x,y): | ||
... return x - y | |||
... | |||
>>> def produto(x,y): | |||
... return x * y | |||
... | |||
>>> def divisao(x,y): | |||
... return x/y | |||
... | |||
Se executarmos estas funções no prompt: | |||
>>> | |||
>>> soma(10,13) | |||
23 | |||
>>> diferenca(10,13) | |||
-3 | |||
>>> produto(10,13) | |||
130 | |||
>>> divisao(10,13) | |||
0 | |||
>>> | |||
* Função soma | * Função soma | ||
** | ** São passados obrigatoriamente dois parâmetros e é retornada a soma dos dois | ||
** Esta função pode receber quaisquer objetos que suportem a operação de soma. | ** Esta função pode receber quaisquer objetos que suportem a operação de soma. | ||
* Função | * Função diferenca | ||
** | ** São passados obrigatoriamente dois parâmetros e é retornada a subtração dos dois | ||
** | ** Esta função pode receber quaisquer objetos que suportem a operação de soma e pode retornar valor negativo | ||
* Função produto | |||
** São passados obrigatoriamente dois parâmetros e é retornada a multiplicação dos dois valores | |||
** Esta função pode receber quaisquer objetos que suportem a operação de soma e pode retornar valor muito alto | |||
* Função divisao | |||
** São passados obrigatoriamente dois parâmetros e é retornada o quociente dos dois valores | |||
** Quando o dividendo é menor que o divisor e os dois valores são inteiros retorna apenas o quociente inteiro | |||
** Deve existir uma regra para a divisão por sero | |||
<br> | |||
== Chamando funções dentro do seu programa == | == Chamando funções dentro do seu programa == | ||
Edição das 10h59min de 9 de janeiro de 2016
Funções

Importância das funções em um programa
Quando escrevemos o trecho de um programa, eventualmente precisamos executá-lo várias vezes.
À medida que evoluímos na programação pode ser necessário que o utilizemos em outros programas.
Se separarmos partes de um programa em trechos claros, simples e objetivos pode ser que consigamos um código menor, mais legível e mais organizado
Esta subdivisão de um programa mais complexo em partes menores é chamada modularização.
Definindo funções no Python!
Usaremos nesse caso, a palavra reservada def, que indica a definição de uma função.
Em seguida, especificamos o nome da função e os nomes dos parâmetros de entrada.
Estes parâmetros podem assumir várias formas como pode ser visto abaixo.
Eles nunca são usados para retornar dados para o programa principal ou para a função que a chama.
Que fique claro que a única forma de retornar dados no Python é através da instrução return.
>>> def soma(x,y): ... return x + y ... >>> def diferenca(x,y): ... return x - y ... >>> def produto(x,y): ... return x * y ... >>> def divisao(x,y): ... return x/y ...
Se executarmos estas funções no prompt:
>>>
>>> soma(10,13) 23 >>> diferenca(10,13) -3 >>> produto(10,13) 130 >>> divisao(10,13) 0 >>>
- Função soma
- São passados obrigatoriamente dois parâmetros e é retornada a soma dos dois
- Esta função pode receber quaisquer objetos que suportem a operação de soma.
- Função diferenca
- São passados obrigatoriamente dois parâmetros e é retornada a subtração dos dois
- Esta função pode receber quaisquer objetos que suportem a operação de soma e pode retornar valor negativo
- Função produto
- São passados obrigatoriamente dois parâmetros e é retornada a multiplicação dos dois valores
- Esta função pode receber quaisquer objetos que suportem a operação de soma e pode retornar valor muito alto
- Função divisao
- São passados obrigatoriamente dois parâmetros e é retornada o quociente dos dois valores
- Quando o dividendo é menor que o divisor e os dois valores são inteiros retorna apenas o quociente inteiro
- Deve existir uma regra para a divisão por sero
Chamando funções dentro do seu programa
#chamando funções soma(2, 2) quadrado(3) soma_quadrado(3, 4) view rawfuncoes2.py hosted with ❤ by GitHub
- Primeira chamada => retorna 4
- Segunda chamada => retorna 9
- Terceira chamada => retorna (9, 16, 25)
No lugar dos números poderiam ter sido usadas variáveis que contivessem estes valores.
Existem algumas características interessantes da passagem de parâmetros em Python. Veremos algumas a seguir.
Parâmetros com valor padrão
Funções com parâmetros com valor padrão podem receber um número variável de parâmetros na chamada, pois o valor padrão será assumido para o parâmetro omitido.
Sempre deixamos o parâmetro com valor padrão para o final da tupla na definição da função. Observe:
#parâmetros com valores padrão def gosta_cachorros(op='sim'): if op == 'sim': print 'Eu gosto de cachorros' elif op == 'nao': print 'Eu nao gosto de cachorros' else: print 'Responda com sim ou nao' view rawfuncoes3.py hosted with ❤ by GitHub
Neste caso se chamássemos esta função no shell do python, ficaria assim:
>>> gosta_cachorros()
Eu gosto de cachorros
>>> gosta_cachorros('sim')
Eu gosto de cachorros
>>> gosta_cachorros('nao')
Eu gosto nao de cachorros
>>> gosta_cachorros('gato')
Responda com sim ou nao
Assim, se o parâmetro com valor padrão for omitido, o valor padrão será usado.
Um caso particular desta propriedade da passagem de parâmetros das funções é a utilização de vários argumentos com valores padrão. Estas são as funções com argumentos chave.
Exemplo:
#argumentos chave def gosta_de(acao='comer', objeto1 = 'batata frita', objeto2 = 'bife'): print 'Eu gosto de ', acao, ' ', objeto1, ' com ', objeto2 view rawfuncoes4.py hosted with ❤ by GitHub
As chamadas a esta função podem ocorrer da seguinte maneira:
>>> gosta_de()
Eu gosto de comer batata frita com bife
>>> gosta_de(objeto1 = 'lasanha')
Eu gosto de comer lasanha com bife
>>> gosta_de(acao = 'cozinhar')
Eu gosto de cozinhar batata frita com bife
>>> gosta_de('beber', 'agua')
Eu gosto de beber agua com bife
>>> gosta_de('beber', 'suco de laranja', 'acerola')
Eu gosto de beber suco de laranja com acerola
>>> gosta_de('beber', objeto2 = 'agua')
Eu gosto de beber batata frita com agua
>>> gosta_de(1, 2, 3)
Eu gosto de 1 2 com 3
Os parâmetros passados vão para o argumento ao qual são atribuídos. Caso não haja atribuição, os valores serão atribuídos da esquerda para a direita, por isso a diferença entre gosta_de('beber', 'agua') e gosta_de('beber', objeto2 = 'agua').
Note na última chamada que esta função aceita qualquer tipo de dado que seja imprimível (suporte print)
Com estas informações, você já será capaz de começar a fazer suas próprias funções!
Lembre-se que se a função não retorna nada o return pode ser omitido.