Funções
Uma função é um objeto com um bloco de código reutilizável, com nome, que executa uma determinada tarefa.
Uma função pode, ou não, receber dados como argumentos e pode, ou não, retornar um valor.
Sintaxe:
def function_name( [lista_argumentos] ):
bloco_de_código
[return [expressao]]
Definição de uma função
Uma função é definida com a palavra reservada def seguida do nome da função e do bloco de código que ela irá executar quando fôr chamada:
O nome da função deve ser seguido de parentes curvos onde é definida a lista de argumentos da função, caso hajam. Se a função tiver argumentos, os parenteses curvos devem estar vazios.
Um função pode, ou não, ter a instrução return. Quando esta instrução é executada, a execução da função termina. A instrução return pode, ou não, retornar um valor.
Exemplo 1:
def funcao_a():
print("ola")
#termina a execução da função e retorna 1:
return 1
Exemplo 2:
def funcao_b(msg):
print(msg)
Chamada de uma função
Uma função só é executada quando é chamada. A chamada de uma função é feita escrevendo o nome da função como se fosse uma instrução:
#definição da função funcao_b:
def funcao_b():
print("ola")
print("Sou a função funcao_b em execução.")
#chamada da função funcao_b:
funcao_b()
Parâmetros de uma função
Parâmetros são variáveis definidas na definição de uma função, e que servem para guardar dados passados à função quando esta é chamada.
Argumentos são os valores passados à função, mais precisamente aos parâmetros.
Os argumentos são de 4 tipos:
- Argumentos posicionais
- Argumentos com nome
- Argumentos com valor de defeito
- Argumentos de comprimento variável
Argumentos posicionais
Argumentos posicionais são argumentos passados à função na ordem correta em que os parâmetros foram definidos:
#Definição da função funcao_b com dois parâmetros posicionais, a e b:
def funcao_b(a, b):
print(a)
print(b)
#chamada da função funcao_b, passando dois argumentos posicionais:
funcao_b("ola", 7)
Nota: Os argumentos posicionais são obrigatórios. Os dados passados a uma função com argumentos posicionais têm de ser iguais, em número, ao número de argumentos posicionais definidos.
Argumentos com nome
Os argumentos com nome tem a ver com a chamada da função. Ou seja, podemos passar dados à função na sua chamada evocando os nomes dos parâmetros para onde os queremos passar. Neste caso, a ordem de passagem dos dados é indiferente:
#Definição da função funcao_b com dois parâmetros posicionais, a e b:
def funcao_b(a, b):
print(a)
print(b)
#chamada da função funcao_b, passando valores, nomeando os parâmetros:
funcao_b(b=7, a="ola")
Argumentos com valor de defeito
Um parâmetro com valor de defeito é um argumento que assume um valor de defeito se, aquando da chamada da função, não for fornecido nenhum valor para esse parâmetro:
#Definição da função funcao_b com dois argumentos posicionais, a e b
# tendo o argumento b o valor de defeito 4:
def funcao_b(a, b=4):
print(a)
print(b)
#chamada da função funcao_b, passando sómente um valor para o argumento a:
funcao_b("ola")
Output: ola, 4
Parâmetros de comprimento variável
Parâmetros variáveis são parâmetros que são definidos para poder ser passado na chamada da função um número arbitrário de dados.
Para indicar que um argumento é de comprimento variável, deve-se colocar um ‘*’ antes do seu nome. Para além disso, o parâmetro de comprimento variável deve ser o último da lista de parâmetros.
#Definição da função funcao_b com dois argumentos posicionais, a e b
# tendo o argumento b o valor de defeito 4
# e um argumento de comprimento variável c:
def funcao_b(a, b=4, *c):
print(a)
print(b)
for arg in c:
print(arg)
#chamada da função funcao_b, passando sómente um valor para o argumento a,
#outro para o argumento b, e 3 para o argumento variável c:
funcao_b("ola", 7, 11, 12, 13)
A instrução return
A instrução return termina a execução de uma função. Pode, ou não retornar um valor de forma explícita. Se não o fizer retorna None.
Exemplo 1:
def somar(a, b, c):
return a+b+c
resultado = somar(3, 4, 5)
Exemplo 2:
def mostra():
print("Boa tarde")
return
r = mostra()
print(r)
Output:
Boa tarde
None
Variáveis locais e variáveis globais
As variáveis globais são declaradas fora de qualquer função e têm um alcance global, podendo ser acedidas de qualquer ponto do programa.
As variáveis locais são declaradas dentro de uma função e têm um alcance limitado à função onde foram declaradas não podendo ser acedidas fora dela.
Exemplo 1:
nr1=7 #variável global
def func_a():
nr2=11 #variável local
print(nr1 + nr2)
Exemplo 2:
nr1=7 #variável global
def func_a():
nr2=11 #variável local
print(nr1 + nr2)
def func_b():
nr3=4
#ERRO:a variável nr2 é local à função func_a()
print(nr2 + nr3)
