Pular para o conteúdo

Funções

Definição

  • Uma função é um bloco de código que é executado apenas quando chamado.
  • É possível passar, para uma função, dados chamados de parâmetros.
  • Uma função pode retornar dados como resultado.
  • Para criar uma função usa-se a palavra-chave def. No exemplo abaixo, a função teste() é chamada e imprime uma frase.
def teste():
  print("Esta é uma função")
teste()

Exemplos

  • Exemplo: A função verifica se um número inteiro é um número primo.
def numero_primo(n):
   for i in range(2, int(n/2)):
     if (n % i == 0):
         print(n, "não é um número primo")
         return()
   print(n, "é um número primo")

print("Digite um número inteiro:")
num = int(input())
numero_primo(num)
  • Exemplo: A função recebe uma lista de números e verifica se os números são números primos.
def numero_primo(n):
   for j in range(0, len(n)):
      i = 2
      while i <= int(n[j]/2):
         if (n[j] % i == 0):
            print(n[j], "não é um número primo")
            i = n[j]
         else:
            i += 1
      if i != n[j]:
         print(n[j], "é um número primo")
num = [7, 36, 101, 117, 200]
numero_primo(num)
  • Exemplo: A função recebe uma quantidade desconhecida de números e verifica se os números são números primos.
def numero_primo(*n):
   for j in range(0, len(n)):
      i = 2
      while i <= int(n[j]/2):
         if (n[j] % i == 0):
            print(n[j], "não é um número primo")
            i = n[j]
         else:
            i += 1
      if i != n[j]:
         print(n[j], "é um número primo")
numero_primo(7, 36, 101, 117, 200)
  • Exemplo: A função recebe um número desconhecido de parâmetros.
def nome_aluno(*nome):
   print("*** Primeira passagem")
   for x in nome:
      print(x)
   print("*** Segunda passagem")
   for i in range(0, len(nome)):
      print(nome[i])
nome_aluno("Maria", "Pedro", "João")
  • Exemplo: O programa possui a saudação “oi” como padrão, mas o usuário pode definir outra saudação como “parabéns”.
def teste(nome, saudacao="Oi"):
   print(saudacao + ","+nome)
teste("Maria")
teste("Maria", "Parabéns")
  • Exemplo: A função recebe três palavras-chaves como argumentos. Isto significa que não importa a ordem na qual os argumentos são passados para a função.
def nome_aluno(aluno1, aluno2, aluno3):
   print(aluno1)
   print(aluno2)
   print(aluno3)
nome_aluno(aluno3 = "João", aluno2 = "Pedro", aluno1 = "Maria")

A resposta do programa é:

Maria
Pedro
João
  • Exemplo: A função recebe um número indefinido de palavras-chaves.
def nome_aluno(**nomes):
   print(nomes["aluno2"])
nome_aluno(aluno3 = "João", aluno2 = "Pedro", aluno1 = "Maria")
  • Exemplo: A função retorna o fatorial de um número.
def fatorial(n):
   fat = 1
   for i in range(2, int(n)+1):
     fat *= i
   return fat
print("Digite um número inteiro:")
num = int(input())
print("Fatorial de", num, "=", fatorial(num))
  • Exemplo: A função retorna a soma e a subtração de dois números.
def operacoes(a,b):
   soma = a + b
   subt = a - b
   return (soma, subt)
x, y = operacoes(10, 7)
print("Números: 10 e 7")
print("Soma =", x, ", subtração =", y)
  • Exemplo: Calcula o fatorial de um número usando recursão.
def fatorial(n):
   if (n > 0):
      fat = n * fatorial(n - 1)
   else:
      fat = 1
   return fat
print("Digite um número inteiro")
n = int(input())
print("Fatorial de", n, "=", fatorial(n))
  • Exemplo: A função lambda recebe qualquer número de argumentos, mas retorna apenas uma expressão. O programa abaixo calcula o valor de 5^2.
exponencial = lambda a, b: a ** b
print("exp =", exponencial(5, 2))

Observe que a função lambda é usada como função anônima dentro da função exponencial(). Esta característica torna possível usar uma mesma função com diferentes objetivos. O script abaixo calcula 5^2 e depois calcula 6^3.

def exponencial(n):
  return lambda a : a ** n
exp2 = exponencial(2)
exp3 = exponencial(3)
print("exp2 =", exp2(5))
print("exp3 =", exp3(6))