Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Programando em Python - Funcoes, Notas de estudo de Informática

Funçoes em python

Tipologia: Notas de estudo

2011

Compartilhado em 25/03/2011

samuel-santos-22
samuel-santos-22 🇧🇷

4.6

(41)

262 documentos

1 / 31

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Claudio Esperança
Python:
Funções
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f

Pré-visualização parcial do texto

Baixe Programando em Python - Funcoes e outras Notas de estudo em PDF para Informática, somente na Docsity!

Claudio Esperança

Python:

Funções

Abstração

 É uma técnica de programação que nos permite pensar

num problema em diversos níveis

 A idéia é que quando estamos pensando num problema

macroscopicamente, não estamos preocupado com

minúcias

 Dividir para conquistar:

 Um problema é dividido em diversos sub-problemas

 As soluções dos sub-problemas são combinadas numa

solução do problema maior

Definindo funções

 Em Python, sub-programas têm o nome de funções

 Formato geral:

def nome ( arg , arg , ... arg ):

comando

comando

 Onde:

 nome é o nome da função

 args são especificações de argumentos da função

 Uma função pode ter 0, 1 ou mais argumentos

 comandos contêm as instruções a ser executadas quando a

função é invocada

Resultado de funções

 Uma função tipicamente computa um ou mais valores

 Para indicar o valor a ser devolvido como o resultado da

função, usa-se o comando return que tem o formato

return expressão

 onde a expressão é opcional e designa o valor a ser

retornado

 Ao encontrar o comando return, a função termina

imediatamente e o controle do programa volta ao ponto

onde a função foi chamada

 Se uma função chega a seu fim sem nenhum valor de

retorno ter sido especificado, o valor de retorno é None

Variáveis locais e globais

 Variáveis definidas em funções são locais , isto é, só

podem ser usadas nas funções em que foram definidas

 Variáveis definidas fora de funções são conhecidas como

variáveis globais

 É possível no código de uma função ler o conteúdo de uma

variável global

 Para alterar uma variável global, ela precisa ser declarada

no corpo da função usando o comando global

Exemplo

def f(): print a a = 1 f()

1

def f(): a = 5 f() print a 1 def f(): global a

a = 5

f() print a 5

Exemplo

>>> def f(x):

return x*x

>>> print f(10)

>>> print x

NameError: name 'x' is not defined

>>> print f()

TypeError: f() takes exactly 1 argument (

given)

Argumentos default

 É possível dar valores default a argumentos

 Se o chamador não especificar valores para esses

argumentos, os defaults são usados

 Formato:

def nome ( arg1 =default1, ..., argN = defaultN )

 Se apenas alguns argumentos têm default, esses devem

ser os últimos

 Se não fosse assim, haveria ambigüidade na passagem de

argumentos

Passando argumentos com nomes

 É possível passar os argumentos sem empregar a ordem

de definição desde que se nomeie cada valor passado

com o nome do argumento correspondente

 Ex.:

def f(nome,saudacao="Oi",pontuacao="!!"): return saudacao+","+nome+pontuacao print f(saudacao="Valeu",nome="Joao") Valeu,Joao!!

Alterando parâmetros

 É possível alterar parâmetros?

 Sim e não

 Como o parâmetro é uma variável local, ele pode ser

alterado sem problemas

 Entretanto, se um parâmetro recebe um valor que vem de

uma variável global, esta não é alterada

 Ex.:

def f(x): x = 5 a = 1 f (a) print a

def f(): global a a = 5 >>> f() >>> print a 5 ## Exemplo ### >>> def f(x): ### return x*x ### >>> print f(10) ### >>> print x ### NameError: name 'x' is not defined ### >>> print f() ### TypeError: f() takes exactly 1 argument ( ### given) ## Argumentos default ##  É possível dar valores default a argumentos ###  Se o chamador não especificar valores para esses ### argumentos, os defaults são usados ##  Formato: ### def nome ( arg1 =default1, ..., argN = defaultN ) ##  Se apenas alguns argumentos têm default, esses devem ## ser os últimos ###  Se não fosse assim, haveria ambigüidade na passagem de ### argumentos ## Passando argumentos com nomes ##  É possível passar os argumentos sem empregar a ordem ## de definição desde que se nomeie cada valor passado ## com o nome do argumento correspondente ##  Ex.: >>> def f(nome,saudacao="Oi",pontuacao="!!"): return saudacao+","+nome+pontuacao >>> print f(saudacao="Valeu",nome="Joao") Valeu,Joao!! ## Alterando parâmetros ##  É possível alterar parâmetros? ###  Sim e não ###  Como o parâmetro é uma variável local, ele pode ser ### alterado sem problemas ###  Entretanto, se um parâmetro recebe um valor que vem de ### uma variável global, esta não é alterada ##  Ex.: >>> def f(x): x = 5 >>> a = 1 >>> f (a) >>> print a 1

Exemplo

>>> def f(x):

x[:] = [5]

>>> a = [1]

>>> f(a)

>>> a

[5]

>>> b = a

>>> b[:] = [7]

>>> a

[7]

Documentando Funções

 Ao invés de usar comentários para descrever o que uma função, é mais vantajoso usar docstrings  Uma constante string escrita logo após o cabeçalho da função (comando def)  Permite o acesso à documentação a partir do interpretador, usando a notação função. doc

def fat(n): ... "Retorna o fatorial de n."

... for i in range(n-1,1,-1): n*=i ... return n ...

fat(4) 24 print fat.doc Retorna o fatorial de n.

Lista de parâmetros variável (2)

 Se o último argumento de uma definição de função

começa com ** , os todos os valores passados usando

chaves a partir daquele são postos num dicionário

 Ex.:

def f(a,b,**c): print a, b, c f(1,2,3) ... TypeError: f() takes exactly 2 arguments (3 given) f(1,2,x=3) 1 2 {'x': 3}

Lista de parâmetros variável (3)

 É possível passar os valores de uma tupla para preencher parâmetros posicionais de uma função bastando para isso precedê-la de *  Um dicionário podem ser usado para preencher parâmetros por chave bastando para isso precedê-lo de **  É preciso tomar cuidado para não abusar!  Ex.:

def f(a,b,c,d): a = 1 >>> f (a) >>> print a 1 ## Exemplo ### >>> def f(x): x[:] = [5] ### >>> a = [1] ### >>> f(a) ### >>> a ### [5] ### >>> b = a ### >>> b[:] = [7] ### >>> a ### [7] ## Documentando Funções  Ao invés de usar comentários para descrever o que uma função, é mais vantajoso usar docstrings  Uma constante string escrita logo após o cabeçalho da função (comando def)  Permite o acesso à documentação a partir do interpretador, usando a notação função. doc >>> def fat(n): ... "Retorna o fatorial de n." ... for i in range(n-1,1,-1): n=i ... return n ... >>> fat(4) 24 >>> print fat.doc Retorna o fatorial de n. ## Lista de parâmetros variável (2) ##  Se o último argumento de uma definição de função ## começa com ** , os todos os valores passados usando ## chaves a partir daquele são postos num dicionário ##  Ex.: >>> def f(a,b,c): print a, b, c >>> f(1,2,3) ... TypeError: f() takes exactly 2 arguments (3 given) >>> f(1,2,x=3) 1 2 {'x': 3} ## Lista de parâmetros variável (3)  É possível passar os valores de uma tupla para preencher parâmetros posicionais de uma função bastando para isso precedê-la de *  Um dicionário podem ser usado para preencher parâmetros por chave bastando para isso precedê-lo de **  É preciso tomar cuidado para não abusar!  Ex.: >>> def f(a,b,c,d): print a,b,c,d f([1,2,3,4,5]) 1 2 (3, 4, 5) {} f({"a":1,"b":2,"c":3,"d":4}) 1 2 () {'c': 3, 'd': 4} f(1,2,3,{"d":1})

b = a ### >>> b[:] = [7] ### >>> a ### [7] ## Documentando Funções  Ao invés de usar comentários para descrever o que uma função, é mais vantajoso usar docstrings  Uma constante string escrita logo após o cabeçalho da função (comando def)  Permite o acesso à documentação a partir do interpretador, usando a notação função. doc >>> def fat(n): ... "Retorna o fatorial de n." ... for i in range(n-1,1,-1): n=i ... return n ... >>> fat(4) 24 >>> print fat.doc Retorna o fatorial de n. ## Lista de parâmetros variável (2) ##  Se o último argumento de uma definição de função ## começa com ** , os todos os valores passados usando ## chaves a partir daquele são postos num dicionário ##  Ex.: >>> def f(a,b,c): print a, b, c >>> f(1,2,3) ... TypeError: f() takes exactly 2 arguments (3 given) >>> f(1,2,x=3) 1 2 {'x': 3} ## Lista de parâmetros variável (3)  É possível passar os valores de uma tupla para preencher parâmetros posicionais de uma função bastando para isso precedê-la de *  Um dicionário podem ser usado para preencher parâmetros por chave bastando para isso precedê-lo de **  É preciso tomar cuidado para não abusar!  Ex.: >>> def f(a,b,c,d): print a,b,c,d >>> f([1,2,3,4,5]) 1 2 (3, 4, 5) {} >>> f({"a":1,"b":2,"c":3,"d":4}) 1 2 () {'c': 3, 'd': 4} >>> f(1,2,3,{"d":1}) 1 2 (3,) {'d': 1} f(1,2,3,*{"a":1}) ... TypeError: f() got multiple values for keyword argument 'a'