Você está na página 1de 30

Linguagem e Técnicas de

Programação
Python - Função
Professores:

Flávio Mania
Wilton Moreira Ferraz Junior
Abstração

É uma técnica de programação que nos permite pensar


num problema em diversos níveis

A idéia é que quando estamos pensando num problema


macroscopicamente, não estamos preocupado com
minúcias

Dividir para conquistar:


√ Um problema é dividido em diversos sub­problemas
√ As soluções dos sub­problemas são combinadas numa
solução do problema maior
Programação Estruturada
É uma disciplina de programação que incorpora o princípio
de "Dividir para Conquistar" (Programação Orientada a
Objetos é outra.)
√ Programas são divididos em sub­programas
√ Cada sub­programa é invocado por meio de um
identificador e uma lista de entradas
√ Permite especificar como um problema pode ser
resolvido em geral
√ O mesmo sub­programa pode ser invocado para
resolver diversos problemas de mesma natureza mas
com valores específicos diferentes
√ Os resultados computados por um sub­programa pode
ser combinado com os de outros sub­programas
Finalidade das funções

Basicamente, criamos funções por dois motivos:


√ Reutilização de código – Como uma função empacota
trechos de código que podem inclusive serrem longos,
podemos usá­las várias vezes sem a necessidade de
redigitar esses trechos de código, tornando o programa
mais simples.
√ Modularização – Podemos dividir o programa em
partes com o uso de funções, tornando­o mais
organizado e fácil de manter.
Tipos de funções

Há dois tipos principais de funções em Python:


√ Funções internas (builtin) – Funções presentes na
própria linguagem, prontas para uso, como por
exemplo a função print().
√ Funções definidas pelo usuário – Funções que nós
mesmos criamos, para realizar tarefas para as quais
não existem funções builtin pré­definida.
Criando Funções em Python
Definimos uma nova função usando a instrução def,
de acordo com a sintaxe a seguir:
def <nome_função>(arg1, arg2, ... argN):
<instruções>
Onde:
nome_função é o nome da função
args são especificações de argumentos da função.
Uma função pode ter 0, 1 ou mais argumentos
instruções contêm as instruções a ser executadas
quando a função é invocada
Criando Funções em Python

Exemplo: função para exibir uma mensagem


def mensagem():
print(“Linguagens e Técnicas de Programação”)

A instrução def cria um objeto e atribui um nome a ele.


Chamando uma função

Para executarmos uma função, realizamos uma


chamada de função:
Funções em Python
com argumentos
Vamos agora criar uma função que utiliza argumentos
passados como fonte de dados para processamento:
def <nome_função>(arg1, arg2, ... argN):
<instruções>
Exemplo: função para somar dois números:
Argumentos posicionais

Ao chamar uma função o Python precisa fazer a


correspondência entre cada argumento de chamada
da função com o parâmetro da definição.

A maneira mais simples de fazer isso é fornecer os


argumentos na mesma ordem que os parâmetros
foram definidos na construção. Valores cuja a
correspondência seja feita desta maneira são
chamados de argumento posicionais
Argumentos posicionais

Exemplo:
Argumentos nomeados
É um par nome=valor passado para uma função.
Associamos diretamente o nome e o valor no próprio
argumento para que não haja confusão quando o valor
for passado para a função. Esta técnica possibilita a
passagem de argumento sem utilizar a ordem correta
dos parâmetros utilizada na implementação da função
Valores padrão

Ao se escrever uma função pode­se definir um valor


padrão para cada parâmetro. Se um argumento para um
parâmetro for espeificado na chamada da função, este
valor será utilizado, caso contrário a função utilizará o
valor padrão na execução. Esta técnica possibilita a
passagem de argumentos opcionais.
Valores padrão

Como as chamadas de funções utilizam a passagem de


argumentos posicionais, os parâmentros com valores padrão
devem ser declarados ao final da lista de parâmetros, para que
possam ser omitidos
Passando lista
para uma função
O Python pode receber listas, arrays e dicionários e poderá
manipular o conteúdo da mesma.
Passando dicionário
para uma função
Instrução return

Uma função tipicamente computa um ou mais valores.


Para indicar o valor a ser devolvido como o resultado
da função, usa­se o comando return que tem o formato:
return expressão
onde a expressão é opcional e designa o valor a ser
retornado.
Ao encontrar o comando return, a função termina
imediatamente e o controle do programa volta ao ponto
onde a função foi chamada.
Instrução return
Se uma função chega a seu fim sem nenhum valor de
retorno ter sido especificado, o valor de retorno é None:
Retornar vários valores

Por definição, funções só retornam um valor, mas


podemos usar algumas estratégias e recursos do
Python para parecer que estamos recebendo vários
retornos.
def coordenadas():
return 170, 36
A função está retornando apenas um conteúdo, uma
tupla, mas os itens dela são os vários valores que a
função precisa retornar. Veremos as diferentes formas
de receber esse resultado, o que pode fazer toda a
diferença para o modo como programamos.
Recebendo uma tupla simples

O jeito comum de receber esse retorno é:

Essa é a maneira clássica de recebermos uma tupla


como retorno. Depois, usamos o índice dos seus
elementos para fazermos referência a eles.
Nomear os itens da tupla

Essa forma deixa o programa mais expressivo:

Agora parece que estamos recebendo vários valores da


nossa função. coordenadas() continua retornando a mesma
tupla. Ao invés de dar um nome para a tupla de retorno,
demos nome para os itens dela, usando a syntaxe x, y
Desempacotando itens

Essa forma de "desempacotar" uma tupla pode ser feita


também com uma lista. Vejamos:
Retornando mais dados
Imagine, que precisamos retornar mais valores. É
possível pegar apenas alguns dados e ignorar outros:

Bem útil, mas só funciona quando queremos pegar os


itens iniciais e ignorar os finais. Se quisermos ignorar os
itens do meio, por exemplo, já não funciona.
Retornando um dicionário
É bem comum vermos funções retornando dicionários:

Nesse caso, recebemos o retorno como apresentado acima.


Uso simples de dicionário, sem mistério, mas que também
pode resolver a situação de retornar vários valores.
Armazenando
funções em módulos
O uso de funções apresenta como uma de suas
vantagens a sua separação do programa principal,
além da possibilidade de reuso em vários programas
diferentes.
Para isso as funções são armazenadas em um arquivo
separado chamado módulo. Para a utilização dessas
funções em outros programas é necessário importar
esse módulo para o programa principal .
A instrução import diz ao Python para deixar o código
de um módulo disponível no arquivo de programa em
execução no momento.
Importando um
módulo completo

Um módulo é um arquivo
com extensão .py que
contém o código que
será importado para um
programa. Para ilustrar o
conceito inicialmente
será criado um módulo
denominado opmat que
armazenará as funções
das operações
matemáticas básicas.
Importando um
módulo completo

Agora criaremos um arquivo separado chamado


calculadora.py no mesmo diretório em que está
opmat.py. Esse arquivo importa o módulo criado
anteriormente e faz a chamada das operações
matemáticas com base na entrada do usuários
Importando um
módulo completo
Importando
funções específicas

É possível importar uma função específica de um


módulo utilizando a seguinte sintaxe:
from nome_módulo import nome_função
Pode­se importar várias funções de um módulo
separando o nome de cada função com uma virgula:
from nome_módulo import função_0, função_1, função_0
Importando
funções específicas

Você também pode gostar