Funcoes em Python sao definidas com a palavra def, seguidas pelo seu nome, alem de parenteses. Dentro dos parenteses, existe a possibilidade de se incluir uma lista de parametros.No inicio do corpo da funcao, e uma boa pratica fazer um comentario, chamado de docstrings. Usando docstrings, ferramentas podem utilizar o comentario para a documentacao do sistema.Funcoes em Python podem ter a opcao de retornar algum valor, uma lista, um objeto, etc ou podem nao retornar nada, se portando como um procedimento.>>> def fib(n): ... """Imprime uma serie de Fibonacci para o parametro n."""... a, b = 0, 1... while a < n:... print a,... a, b = b, a+b...>>> # Chamando a funcao... fib(2000)>>> def fib2(n): ... """Returnondo uma lista contendo uma serie de Fibonacci para n."""... result = []... a, b = 0, 1... while a < n:... result.append(a) ... a, b = b, a+b... return result...>>> f100 = fib2(100) Podemos ter um variavel numero de argumentos na lista, com valores default ou nao. Para valores default, nao existe a necessidade de se passar esse valor para a funcao.Alem disso, nao e necessario passar os argumentos para a funcao na ordem dos parametros, desde que utilizemos um par nome=valor.>>> def funcaoComArgumento(arg1, arg2="valor_default", arg3="valor_default") ... #chamadas a funcao funcaoComArgumento(100) funcaoComArgumento(arg2="qualquercoisa", arg1=100) # ocorrera um erro para a chamada a seguir pois nao existe um valor default para arg1 funcaoComArgumento(arg2="qualquercoisa") Finalizando, parametros com a forma **name recebem um dicionario e com a forma *name recebem tuplas. Os parametros que recebem dicionarios devem, obrigatoriamente serem os ultimos parametros da funcao.def cheeseshop(kind, *arguments, **keywords): print "-- Do you have any", kind, "?" print "-- I'm sorry, we're all out of", kind for arg in arguments: print arg print "-" * 40 keys = sorted(keywords.keys()) for kw in keys: print kw, ":", keywords[kw]cheeseshop("Limburger", "It's very runny, sir.", "It's really very, VERY runny, sir.", shopkeeper='Michael Palin', client="John Cleese", sketch="Cheese Shop Sketch")-- Do you have any Limburger ?-- I'm sorry, we're all out of LimburgerIt's very runny, sir.It's really very, VERY runny, sir.----------------------------------------client : John Cleeseshopkeeper : Michael Palinsketch : Cheese Shop Sketch Python possui algumas estruturas usadas para agrupar tipos e List e o mais versatil deles, nao sendo necessario que uma lista possua tipos iguais.>>> a = ['spam', 'eggs', 100, 1234]>>> a['spam', 'eggs', 100, 1234]Como strings, listas tambem utilizam indices, porem, sao mutaveis:>>> a[0]'spam'>>> a[3]1234>>> a[-2]100>>> a[1:-1]['eggs', 100]>>> a[:2] + ['bacon', 2*2]['spam', 'eggs', 'bacon', 4]>>> 3*a[:3] + ['Boo!']['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boo!']>>> a[:]['spam', 'eggs', 100, 1234]>>> a[2] = a[2] + 23>>> a['spam', 'eggs', 123, 1234]>>> # Substituir alguns itens:... a[0:2] = [1, 12]>>> a[1, 12, 123, 1234]>>> # Remover alguns:... a[0:2] = []>>> a[123, 1234]>>> # Inserir alguns:... a[1:1] = ['bletch', 'xyzzy']>>> a[123, 'bletch', 'xyzzy', 1234]>>> # Inserir a propria lista:>>> a[:0] = a>>> a[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]>>> # Limpar a lista:>>> a[:] = []>>> a[]Tambem temos a funao len():>>> a = ['a', 'b', 'c', 'd']>>> len(a)4Para mostrar como listas em Python e versatil, tambem podemos criar listas contendo outras listas:>>> q = [2, 3]>>> p =