A sintaxe geral para definir uma função é:
def nome_funcao(arg_1, arg_2, ..., arg_n):
#
# bloco de código contendo corpo da função
#
return valor_de_retorno # retornar é opcional
O código da função, uma vez avaliado pelo interpretador, define um nome local. Os argumentos são valores fornecidos quando chamada a função, e que ficam disponíveis por meio de variáveis locais no corpo da função.
No exemplo abaixo, temos uma função que recebe uma lista de dicionários como parâmetro, e uma função que recebe um dicionário. A primeira itera pela lista recebida, e passa o elemento atual como argumento para a segunda.
def imprime_cardapio (pratos):
print "Cardapio para hoje\n"
for p in pratos:
imprime_prato(p)
print "\nTotal de pratos: %d" % len(pratos)
def imprime_prato(p)
print "%s ........ %10.2f" % (p["nome"], p["preco"])
Ao ser interpretado, o código acima define dois nomes locais: imprime_cardapio e imprime_prato. Para que a função seja de fato executada, usamos este nome seguido dos argumentos passados entre parênteses:
# defino dicionários descrevendo os pratos
p1 = {"nome": "Arroz com brocolis", "preco": 9.90}
p2 = {"nome": "Soja com legumes", "preco": 7.80}
p3 = {"nome": "Lentilhas", "preco": 4.80}
lista_pratos = [p1, p2, p3]
# e chamo uma função, passando os pratos como argumento
imprime_cardapio(lista_pratos)
o que resulta na seguinte saída quando executado:
Cardapio para hoje
Arroz com brocolis ........... 9.90
Soja com legumes ........... 7.80
Lentilhas ........... 4.80
Total de pratos: 3
def bar(t):
return "The rain in Spain falls mainly in the %s." % t
define um valor de retorno, que é uma string; ao chamar esta função com um argumento:
a = bar("plains")
o código da função é avaliado e um valor, retornado, sendo armazenado na variável a (observe o uso do operador de atribuição seguido da chamada da função). Para visualizar o valor retornado, usamos a conveniente instrução print:
>>> print a
The rain in Spain falls mainly in the plains.
Dica: para retornar conjuntos de valores, basta retornar uma seqüência ou outro valor de tipo composto.