Funcoes Python
Funcoes Python
FUNÇÕES
Definindo Funções
Trata-se de uma declaração composta
As funções fornecem uma forma de nomear um bloco de código integrado como um
objeto
Esse código pode ser chamado usando esse nome, o que permite que o mesmo código
seja chamado diversas vezes e em vários lugares
Assim, a definição de uma função estabelece um objeto função, que integra um bloco
executável
Os blocos de construção de uma função são a declaração de controle, uma docstring
opcional, o bloco de código controlado e uma declaração de retorno (return)
Declaração de controle
In [5]: #Exemplo:
def soma(a,b):
resultado = a + b
return resultado
soma(5,2)
Out[5]: 7
Docstring
In [14]: #Exemplo:
def soma(a,b):
"""
Esta função efetua a soma de duas variáveis e retorna o resultado
parâmetros:
a - variável numérica (float, int ou complexo)
b - variável numérica (float, int ou complexo)
print(soma(15.5, 23.7))
print(soma(2 + 10j,15 + 2j))
print(soma(13, 15))
39.2
(17+12j)
28
In [15]: help(soma)
soma(a, b)
Esta função efetua a soma de duas variáveis e retorna o resultado
parâmetros:
a - variável numérica (float, int ou complexo)
b - variável numérica (float, int ou complexo)
Parâmetros
Os parâmetros permitem passar valores para a função, que podem ser usados no bloco
de código dessa função
Uma função não precisa aceitar nenhuma parâmetro
Os valores do parâmetro podem ser definidos com base na posição em que são
passados ou com base em palavras-chave. Não é possível usar uma atribuição de
palavra-chave à esquerda de uma atribuição posicional
In [2]: #Exemplo:
def multiplicacao(x,y):
"""
Função que recebe dois parâmetros e efetua a multiplicação entre eles
Parâmetros:
"""
mult = int(x) * int(y)
return mult
multiplicacao(2.6,1.7)
Out[2]: 2
In [28]: multiplicacao(2j,5.6)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[28], line 1
----> 1 multiplicacao(2j,5.6)
Out[4]: 180
Out[8]: 24
Out[9]: -40
In [10]: multiplicacao(c=2, 2, 3)
Pode-se requerer que um parâmetro seja chamado apenas usando o método da palavra-
chave colocando * à esquerda da definição da função
Todos os parâmetros à direita do asterisco podem ser chamados apenas usando palavra-
chave
In [1]: #Exemplo
First: 1
Second: 2
Third: 3
In [3]: does_keyword(1,2,3)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[3], line 1
----> 1 does_keyword(1,2,3)
In [4]: #Exemplo
def soma(a,b,c=3):
resultado = a + b + c
return resultado
In [5]: soma(1,2,4)
Out[5]: 7
In [6]: soma(1,2)
Out[6]: 6
In [7]: #Exemplo2
def soma(a=2,b,c):
resultado = a + b + c
return resultado
O uso de objetos mutáveis (lista ou dicionários) para valores padrão pode gerar
problemas
In [9]: funcao_default()
[1]
In [10]: funcao_default()
[1, 1]
In [11]: funcao_default()
[1, 1, 1]
Sempre que a função é chamada, a lista mantém os valores das chamadas anteriores
Recomenda-se não usar objetos mutáveis como parâmetros padrão para evitar erros
difíceis de rastrear e confunsão
Uma forma de solucionar é definir o valor padrão como None
In [18]: funcao_default()
[1]
In [19]: funcao_default()
[1]
In [21]: does_positional(1,2,3)
First: 1
Second: 2
Third: 3
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[22], line 1
----> 1 does_positional(first=1, second=2, third=3)
In [24]: does_positional(1,2,third=3)
First: 1
Second: 2
Third: 3
First: 1
Second: 2
Third: 3
In [26]: does_positional(1,second=2, 3)
does_positional(1,2,third=3)
First: 1
Second: 2
Third: 3
É possível passar curingas nas definições da função para aceitar um número indefinido
de argumentos posicionais ou palavras-chave
Parâmetros curinga posicionais (*args) e de palavra-chave (**kwargs) podem ser usados
na mesma função, bastando definir os parâmetros posicionais primeiro e os parâmetros
de palavra-chave depois.
Marcos
Cesar
Botelho
49
1
10
14
9.6
(1+20j)
True
number : 49
name : Marcos
bool : True
Posicional: (1, 2)
Keyword: {'a': 'a', 'b': 3}