Prof. Natalia Castro Fernandes
Mestrado em Telecomunicações – UFF
2º semestre/2012
Introdução
 Programas são divididos em subprogramas ou funções
 Funções são chamadas por um identificador e uma lista
de parâmetros
 Funções podem retornar valores
Funções em Python
 Formato geral:
 def nome (arg, arg, ... arg):



comando
...
comando
Argumentos da função (0 ou mais
argumentos)
Nome da função
Comandos (0 ou mais)
Retorno de funções
 Uma função pode retornar um valor/estrutura
 Valor calculado
 Código de erro
 Comando return
expressão é opcional
 Uso:

return expressão
 Quando a execução chega a um return, a função
termina, voltando ao ponto aonde a função foi chamada
 Se nenhum valor de retorno for especificado, a função
retorna None
Exemplos
Parâmetros de funções
 Parâmetros ou entradas ou argumentos
 Podem ser passados por valor ou referência


Valor = A função recebe uma cópia da variável e alterações do
valor dentro da função não afetam as variáveis originais
Referência = A função recebe a referência da variável e
alterações do valor dentro da função afetam as variáveis
originais
Passagem por valor
 Variável não é modificada
 Exemplos
Se o parâmetro existe,
ele precisa ser passado
Passagem por valor
Argumentos padrão
 Determinam um valor padrão para uma determinada
entrada
 Nesse caso, a entrada não precisa ser especificada

Assume valor pré-determinado
 Uso:
 Formato:

def nome (arg1=default1, ..., argN=defaultN)
 Se apenas alguns argumentos possuem padrões, então
esses devem vir por último

Evita ambiguidade na definição dos argumentos
Passagem por referência
 Modifica o valor da variável original
 Feito com o uso de listas e dicionários
Contudo...
Por que não mudou?
Valor x Referência
 Todos os parâmetros são passados por valor
 A lista e o dicionário são referências

O que é passado para a função é o endereço do espaço de
memória
 Endereço não pode ser mudado, mas o espaço de memória
apontado não está protegido e pode ser modificado
Valor x Referência
>>>Lista=[1,3]
>>>Lista.append(2)
Memória antes
Memória depois
1,3
1,3,2
Lista – começa no endereço 2
Lista – começa no endereço 2
>>>Lista=[‘str’]
Memória antes
Memória depois
1,3,2
Lista – começa no endereço 2
1,3,2
‘str’
Lista – começa no
endereço 7
Valor x Referência
>>>Lista=[1,3]
>>>funcao(Lista)
Estou passando a informação lista que
começa no endereço x
Valor x Referência
 Executando a função
>>>Lista.append(2)
Memória antes
Valor interno da lista
Memória depois
Valor interno da lista
1,3
1,3,2
Lista – começa no endereço x
Lista – começa no endereço x
>>>Lista=[‘str’]
Memória antes
Valor interno da lista
Memória depois
1,3,2
Lista – começa no endereço x
Valor interno da lista
1,3,2
‘str’
Lista – começa no endereço x
Variáveis locais e globais
 Variáveis definidas dentro de funções são locais
 Não tem valor fora da função
 Variáveis definidas fora de funções são globais
 Para uma função usar variável global, é preciso declarar
a variável como global
Variáveis locais e globais
 Exemplos
Não faça isso!!!!
Evite usar
global!!!
Passe valores
como
argumentos da
função!!!
Lista de parâmetros variável
 Uma lista de parâmetros de tamanho variável pode ser
passada para a função
 Uso do último argumento com *

Todos os valores passados a partir desse ponto são colocados
em uma tupla
 Uso:

def funcao(arg1, arg2, ..., *argn)
Lista de parâmetros variável
 Exemplo
resto =(3,)
resto =(3,4,5,6)
resto =()
Recursividade
 Forma de resolver problemas
 Resolução de uma função implica em rechamar essa
mesma função
 Exemplo:
i-ésimo elemento da sequência
 Fibonacci
def Fibonacci(i):
if i==0: return 0
if i==1: return 1
return Fibonacci(i-1)+Fibonacci(i-2)
Exercício
 Calcule a função fatorial recursivamente
 Calcule o e-nésimo elemento de uma PA recursivamente
 Guarde, em uma lista, os n+1 elementos de uma PA
recursivamente
 Faça um programa que calcula a área de uma forma
geométrica. Os parâmetros para calcular a área devem ser
passados para a função como parâmetros, assim como o
nome da forma. O seu programa deve ser capaz de
responder a ‘quadrado’, ‘retângulo’, ‘círculo’ e ‘triângulo’. Ex:
 Area(‘triangulo’,base,altura)
 Area(‘circulo’,raio)
Download

Programação Avançada Funções