Aula 11 – Python – Funções

More videos
Views
   

Python – Funções

Uma função é um bloco de código que só é executado quando é chamado.

Você pode passar dados, conhecidos como parâmetros, para uma função.

Funções podem retornar dados (objetos) ou não como resultado.

Aceitam Doc Strings.

Doc Strings são strings que estão associadas a uma estrutura do Python ( classe, método ou função) e devem ser colocadas como a primeira linha da definição de qualquer uma dessas estruturas citadas em laranja.

Então, por isso, as Doc Strings são colocadas dentro do corpo da função, geralmente logo no início, como já foi dito no parágrafo anterior.

O objetivo das Doc Strings é servir de documentação para aquela estrutura, seja uma classe, um método ou uma função.

Exemplo:


def fatorial(n):
"""Esta função retorna o fatorial de um número n"""
    if n == 0 or n == 1:
        return 1 
    else:
        return n * fatorial(n - 1) 
TRUE, FALSE e NULL em Python
Python – Funções

Criando uma Função

Em Python, uma função é definida usando a palavra-chave def:


def minha_funcao():
    print ("Olá mundo!")

Chamando uma Função

Para chamar uma função, use o nome da função seguido de parênteses:

minha_funcao() #Saída: Olá mundo!

Parâmetros

Informações podem ser passadas para as funções como parâmetro.

Os parâmetros são especificados após o nome da função, dentro dos parênteses.

Você pode adicionar quantos parâmetros quiser, tem apenas separá-los com uma vírgula.

O exemplo a seguir tem uma função que recebe um parâmetro (name).

Quando a função é chamada, passamos um nome, que é usado dentro da função para imprimir Olá e o nome da pessoa:


def saudacao(name):
    print ("Olá " + name)

Chamando a minha_funcao() passando o parâmentro name:

saudacao("Toti") #Saída: Olá Toti

Valor do Parâmetro Padrão (Default Parameter Value)

O exemplo a seguir mostra como usar um valor de parâmetro padrão.

Se chamarmos a função sem parâmetro, ela usa o valor padrão, senão, usa o parâmetro passado.


def nacionalidade(pais = "Brasil"):
    print("Eu nasci no(a)" + pais)

nacionalidade() #Saída: Eu nasci no(a) Brasil!
nacionalidade("França") #Saída: Eu nasci no(a) França!
nacionalidade("Japão") #Saída: Eu nasci no(a) Japão!

Observações:

1. Os argumentos com padrão devem vir por último, depois dos argumentos sem padrão.

2. O valor do padrão para um parâmetro é calculado quando a função é definida.

Exemplo:


def func(name, pais = "Brasil"):
    print(name + " nasceu no(a)" + pais)

3. Os argumentos passados sem identificador são recebidos pela função na forma de uma lista.

4. Os argumentos passados com identificador são recebidos pela função na forma de um dicionário.

5. Os parâmetros passados com identificador na chamada da função devem vir no fim da lista de parâmetros.

Exemplo:

def minhaFuncao(*argumentos, **argumentosIndentificados) :
    print(argumentos)
    print(argumentosIndentificados)

minhaFuncao('bola', 'carro', nome='Victor')

# Saída:
# ('bola', 'carro') Tupla(lista)
# {'nome': 'Victor'} Dicionário

Na aula 8 do curso construindo uma loja virtual com django, é mostrado o uso desse recurso Default Parameter Value em um projeto real.

Retorno de função (Return Values)

Para permitir que uma função retorne um valor, use a instrução de retorno return:


def multi_cinco(x):
  return 5 * x

print(multi_cinco(3))
print(multi_cinco(5))
print(multi_cinco(9))

Funções tem namespace próprio (escopo local), e por isso podem ofuscar definições de escopo global.


def func(str):
    str = "String declarada dentro da função"
    print(str)

str = "String declarada fora da função com o mesmo nome (str)"
func(str)

#Saída: String declarada dentro da função

def func():
    str = "String declarada dentro da função"
    print(str)

str = "String declarada fora da função com o mesmo nome (str)"
func()

#Saída: String declarada dentro da função

 

Recursão

O Python também aceita recursividade na chamada de funções, o que significa que uma função definida pode se chamar.

A recursão é um conceito matemático e de programação comum.

Significa que uma função chama a si mesma.

Cuidado

O desenvolvedor deve ter muito cuidado com a recursão, pois pode cair em uma função que nunca termina, ou uma que use quantidades excessivas de memória ou poder de processamento.

Contudo, quando escrito corretamente, a recursão pode ser uma abordagem muito eficiente e matematicamente elegante para a programação.

Neste exemplo clássico, de dentro da própria função fatorial ocorre uma chamada a ela mesma.


def fatorial(n):
    if n == 0 or n == 1:
        return 1 
    else:
        return n * fatorial(n - 1) 

Pensado no fatorial de 3, 3 não é igual a zero nem a 1, a execução cai no else e multiplica 3 pelo resultado da chamada da fatorial passando 2 dessa vez (3 – 1).

2 não é igual a zero nem a 1, a execução cai no else e multiplica 2 pelo resultado da chamada da fatorial passando 1 dessa vez (2 -1).

Dessa vez cai no if e retorna 1 que vai ser multiplicado com o n(2) da chamada anterior que vai ser multiplicado pelo n(3) da antepenúltima chamada, resultado 3 * 2 * 1 = 6.

As chamadas vão sendo empilhadas até chegar no caso base, que é quando n é igual a um, aí então, as chamadas vão sendo desempilhadas e a multiplicação vai ocorrendo.

As vezes pode levar algum tempo para descobrir exatamente como isso funciona, a melhor maneira de descobrir é testando e modificando códigos.

Com isso encerramos mais essa aula. 🙂

Curta a página do Código Fluente no Facebook.
https://www.facebook.com/Codigofluente-338485370069035/

Vou deixar meu link de referidos na digitalocean pra vocês.

Quem se cadastrar por esse link, ganha $100.00 dólares de crédito na digitalocean:

Digital Ocean

Esse outro link é da one.com:

One.com

Obrigado, até a próxima e bons estudos. 😉

Increva-se

Inscreva-se agora e receba um e-mail assim que eu publicar novo conteúdo.

Concordo em me inscrever no blog Código Fluente

Você poderá cancelar sua inscrição a qualquer momento.

(Visited 17 times, 1 visits today)
About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>