Categorias
Introdução à Programação para Bioinformática com Biopython

Funções

Capítulo 7

Este conteúdo faz parte do livro “Introdução à Programação para Bioinformática com Biopython“. Você pode adquirir a versão impressa desse livro aqui ou a versão para Kindle aqui. Para nos citar, consulte este link.

Em programação, uma função é uma sequência definida de instruções ou comandos, que realiza uma tarefa específica. Essa definição lhe parece familiar? Espero que sim! Até agora vimos diversas funções pré-definidas pelo Python, como por exemplo, print, open ou str.

Neste capítulo abordaremos como definir nossas próprias funções.

Definindo funções

Para definir uma função deve-se seguir a sintaxe:

def nome_da_funcao(parametros):
	comandos

Como por exemplo, vamos criar uma função que imprime uma mensagem na tela:

def imprimir_mensagem():
	print("Hello, World!")

Entretanto, se você executar o comando acima nada irá acontecer. Isso acontece porque funções devem ser “chamadas” para que sejam executadas. Veja:

def imprimir_mensagem():
	print("Hello, World!")
# Chamando a funcao imprimir_mensagem()
imprimir_mensagem()

A grande vantagem em se usar funções é que se pode defini-las no início do código e executá-las quantas vezes for necessário. Podemos ainda inserir parâmetros para personalizá-la.

def imprimir_mensagem(pessoa):
	print("Hello, %s!" %pessoa)
 
# Chamando a funcao imprimir_mensagem()
 
imprimir_mensagem("Jose")
# Hello, Jose!
 
imprimir_mensagem("World")
# Hello, World!

No exemplo acima, a função imprimir_mensagem( ) recebe um parâmetro chamado pessoa e imprime uma mensagem personalizada com o conteúdo enviado durante sua chamada. Ao chamar a função imprimir_mensagem é enviado um argumento no formato string.

Você ainda pode enviar uma lista como argumento para uma função:

def imprimir_mensagem(pessoas):
	for pessoa in pessoas:
		print("Hello, %s!" %pessoa)
 
# Lista de individuos
individuos = ["Jose","Maria","Luis","Carlos", \
"Pedro","Raquel","Sara"]
 
# Chamando a funcao imprimir_mensagem()
imprimir_mensagem(individuos)

Funções são bastante úteis para organização de código. Se uma determinada tarefa em seu código se repete diversas vezes, considere reescrevê-la inserindo os trechos repetidos em uma única função, que será chamada quando necessário. Parâmetros e variáveis presentes em funções são válidos apenas localmente, ou seja, podem ser executados apenas dentro da função.

Podemos ainda receber o resultado do processamento de uma função e atribuí-lo a uma variável.

def quadrado(valor):
    return valor*valor
 
a = 10 
qdo =  quadrado(a)
print(qdo)
# imprimira o valor 100

No exemplo a seguir utilizaremos funções para calcular o fatorial de um número:

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

n = 10

print("FATORIAL ",n," = ", fatorial(n))

Funções com argumentos default

Python permite a definição de valores default (padrão) para argumentos. Esses valores serão adotados caso outros valores não sejam informados durante a chamada da função. Segue abaixo um exemplo desse tipo de declaração de função:

def minhaFuncao(arg1, arg2="Segundo argumento"):

Abaixo, temos como exemplo uma função que salva o conteúdo de um dicionário em um arquivo:

def salvaMapa(mapa, nomeArquivo = 'temporario.txt'):
    ''' O dicionário mapa será salvo no 
arquivo temporario.txt '''
    arq = open(nomeArquivo,'w')
    for k in mapa.keys():
        linha = 'Coluna: '+ str(k)+' Valor: '+str(mapa[k])
        arq.write(linha + '\n')
    arq.close()
    return None

mp = {'A': 'ALA', 'R': 'ARG', 'N':'ASN', 'D':'ASP', 'C':'CYS'}
salvaMapa(mp,'aminoacidos.txt')

No exemplo acima, caso o usuário não informe um nome para o arquivo durante a chamada da função, o arquivo será criado com o nome “temporario.txt”.

Funções com número indefinido de argumentos

Python permite a criação de funções com número variável de argumentos. Para isso, utiliza-se o caractere “*” antes da declaração do parâmetro. Qualquer quantidade excedente de argumentos enviada será associada ao ultimo elemento em forma de tupla. Segue abaixo um exemplo desse tipo de declaração:

def myFunc(arg1, *arg2):

Agora, vamos criar uma função que calcula a mediana de qualquer sequência de valores passados:

def mediana(*valores):
    tam = len(valores)
    if tam == 0:
        return None
    elif tam%2 == 0:
        ctr  =  tam/2
        return (valores[ctr] + valores[ctr -1]) / 2 
    else:
        return valores[tam/2] 

mediana(2,5,6,7,9,12,20) 
# retornaria o valor 7

mediana(2,5,6,7,9,12,20,52)
# retornaria o valor 8

No exemplo a seguir faremos uma função que soma de vários números.

def soma(*valores):
tam = len(valores)
soma = 0

for i in range(tam):
soma = soma + valores[i]

return soma

print(soma(2,2,3,5))

Funções com número indefinido de chaves

Por fim, em Python as funções podem receber qualquer número de argumentos com valores e chaves. Para isso, basta usar no argumento da função os caracteres “**”. Os argumentos excedentes serão enviados para função como dicionários. Segue abaixo, um exemplo desse tipo de declaração:

def myFunc(arg1,**arg2): 

Abaixo um exemplo de uso:

def imprimeFormatado(*val,**kvals):
    print(val)
    print(kvals)

imprimeFormatado('Autores',4, ano = 2015, \
inicio = ”janeiro”, fim = ”dezembro”)

# ('Autores',4)
# {'ano': 2015, 'inicio':'janeiro', 'fim' :'dezembro'}

Nesse exemplo os argumentos enviados “sem nome” (“Autores”, 4) serão atribuídos ao parâmetro val e os passados “com nome” (ano = 2015, inicio = ”janeiro” e fim = ”dezembro”) serão atribuídos a kvals.

Quer aprender mais? Conheça nossos cursos profissionalizantes à partir de R$19,99:

Livro Introdução à Programação para Bioinformática com Biopython

Capítulo 1
Introdução ao Python

Capítulo 2
Comandos condicionais

Capítulo 3
Laços de repetição

Capítulo 4
Trabalhando com strings

Capítulo 5
Listas

Capítulo 6
Manipulando arquivos

Capítulo 7
Funções

Capítulo 8
Princípios da orientação a objetos

Capítulo 9
Introdução ao Biopython

Capítulo 10
Sequências

Capítulo 11
BLAST

Capítulo 12
PDB

Capítulo 13
Visualização de dados em Python

Capítulo 14
Outras coisas interessantes que se pode fazer com Biopython

Capítulo 15
Hierarquia do Biopython

Por favor, nos cite:

MARIANO, D. C. B.; BARROSO, J. R. P. M. ; CORREIA, T. S. ; de MELO-MINARDI, R. C. . Introdução à Programação para Bioinformática com Biopython. 3. ed. North Charleston, SC (EUA): CreateSpace Independent Publishing Platform, 2015. v. 1. 230p .

Por Diego Mariano

Doutor em Bioinformática pela Universidade Federal de Minas Gerais com atuação na área de ciência de dados e aprendizado de máquina aplicados ao aperfeiçoamento de enzimas usadas na produção de biocombustíveis. Mestre em Bioinformática, também pela UFMG, atuando na área de desenvolvimento de sistemas Web para montagem de genomas. Atualmente realiza estágio pós-doutoral no Departamento de Ciência da Computação da UFMG com foco em desenvolvimento de sistemas Web para Bioinformática, análise exploratória e visualização de dados. Tem conhecimentos nas linguagens: PHP, JavaScript, Python, R, Perl, HTML, CSS e SQL.