0% acharam este documento útil (0 voto)
16 visualizações13 páginas

Slides 4

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
16 visualizações13 páginas

Slides 4

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 13

Funções em Python: utilidade e sintaxe

Vamos agora ver que para além das funções pré-definidas que temos usado, podemos
definir funções em Python. Estas são muito úteis, porque permitem:
Funções em Python: exemplos

Notas:
- A instrução def cria um objeto do tipo função e
atribui-lhe um nome;
- return devolve o(s) resultado(s) para a instrução
que chama a função no programa principal, p.ex.;
- Para chamar a função basta escrever o seu nome,
colocando os seus argumentos, quando necessário,
tal como fazemos com as funções pré-definidas que
temos usado.
Funções em Python: exemplos

Os argumentos de entrada são duas


sequências, o resultado é a interseção
das duas
Funções em Python: documentação
Funções em Python: alcance dos nomes
Quando é invocado um objeto numa função, como parâmetro/argumento, ou no seu
interior, a resolução dos nomes, segue a seguinte regra:

- Em 1º lugar é procurado no espaço dos nomes local da função, isto é os nomes que
foram atribuídos a objetos no interior da função ou na definição da mesma (através
dos parâmetros de entrada);
- Se o nome não foi encontrado no espaço local, procura no espaço global, isto é, no
módulo principal;
- Caso não exista procura no espaço de nomes pré-definidos do Python;
- Caso não seja encontrado em nenhum daqueles espaços, será levantada uma exceção:
“NameError: name is not defined”.
Deve ter-se cuidado com estas resoluções de nomes, nomeadamente com a noção de
que as variáveis são locais ou globais, para não gerar erros que podem ser difíceis de
detetar…
Funções em Python: alcance dos nomes
def assign(x): Neste exemplo, z é variável global e local;
z=x prevalece a variável global
return z
z=22
print(assign(1))
print(z)
>>> 1 Forma mais “segura” de utilizar as funções
>>> 22
Neste exemplo, assegura-se que z é Neste exemplo, z é alterado no programa principal,
variável global em todo o programa usando a função definida; é a forma mais correta de
fazer, evitando problemas laterais

return zz
return

print (z) print (z)


Funções em Python: parâmetros posicionais

operation (3,2,5)

é diferente de
operation (5,3,2)
Funções em Python: parâmetros chave-valor
def operacao(x,y,z):
return x-y+z

print(operação(3,7,5)) # parâmetros/argumentos posicionais

>>> 1

def operacao(x,y,z):
return x-y+z

print(operacao(3,z=5,y=7)) # na chamada da operação, os argumentos são introduzidos


# com a chave e valor. Isto só pode ser feito a seguir aos valores
# posicionais. A operação(x=3,5,8) daria erro!
>>> 1
Funções em Python: valores por omissão
Funções em Python: devolução de valores

Como já vimos, uma função aceita argumentos de entrada, ou seja,


objetos com os quais vai realizar uma série de instruções/operações e no
final vai devolver (return) objetos obtidos/calculados.

A função pode devolver um ou mais objetos ou também não devolver


nenhum objeto, fazendo por exemplo apenas um “print” de um dado
valor (esta opção menos aconselhada!).

Quando devolve mais do que um objeto, os objetos são devolvidos


numa tupla. Quando não devolve nenhum objeto, devolve o objeto
“None”.
Funções em Python: devolução de valores
def soma(x,y): def soma(x,y): def soma(x,y):
s=0 s=0 s=0
if x>y: if x>y: if x>y:
guarda=x guarda=x
guarda=x
x=y x=y
x=y y=guarda
y=guarda
y=guarda for i in range(x,y+1):
for i in range(x,y+1):
for i in range(x,y+1): s+=i s+=i
s+=i return x, y, s print(f'a soma de {x} ate {y} e {s}')
return s
s1=soma(2,8) s1=soma(2,8)
s1=soma(2,8)
print(s1) print(s1)
print(s1) print(s1[2])
>>> (2, 8, 35) >>> a soma de 2 ate 8 e 35
>>> 35 >>> None
>>> 35
Funções em Python: recursão
Funções em Python: recursão

Você também pode gostar