-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaula043_funcoes_com_parametro_padrao.py
112 lines (90 loc) · 3.26 KB
/
aula043_funcoes_com_parametro_padrao.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
"""
Funções com parâmetro padrão (Default Parameters)
- Funções onde a passagem de parâmetro seja opcional.
"""
# Exemplo onde a passagem de parâmetro é opcional:
print('Geek University')
print()
# Exemplo onde a passagem de parâmetro é obrigatório:
def quadrado(numero):
return numero ** 2
print(quadrado(3))
def exponencial(numero, potencia=2):
return numero ** potencia
print(exponencial(2, 3))
print(exponencial(3, 2))
print(exponencial(3)) # Por padrão eleve ao quadrado
print(exponencial(3, 5)) # Eleva à potência informada pelo usuário
"""
Ao colocar potencia=2 estamos definindo o 2 como parâmetro padrão. Se o usuário passar só um argumento, a função vai usar o parâmetro padrão, entretanto se o usuário passar dois argumentos, a função vai usar o parâmetro determinado pelo usuário.
Podemos usar inclusive para todos os parâmetros da função
OBS: Em funções Python, os parâmetros com valores default (padrão), DEVEM SEMPRE estar ao final da declaração.
"""
# Outros exemplos:
def soma(num1=0, num2=0):
return num1 + num2
print(soma(4,3))
print(soma(4))
print(soma())
# Exemplo mais complexo:
def mostra_informacao(nome='Geek', instrutor=False):
if nome == 'Geek' and instrutor:
return 'Bem vindo instrutor Geek!'
elif nome == 'Geek':
return 'Eu pensei que você era o instrutor'
return f'Olá {nome}'
print(mostra_informacao('Geek', True))
print(mostra_informacao('Geek', False))
print(mostra_informacao(instrutor=True))
print(mostra_informacao('Ozzy'))
"""
Por quê utilizar parâmetros com valor default?
- Permite maior flexibilidade nas funções;
- Evita erros com parâmetros incorretos;
- Permite trabalhar com exemplos mais legíveis de código.
Quais tipos de dados podemos utilizar como valores de parâmetros default?
- Qualquer tipo de dado pode ser utilizado, inclusive funções.
"""
# Exemplos de funções como parâmetros:
def soma2(num1, num2):
return num1 + num2
def subtracao(num1, num2):
return num1 - num2
# Criamos duas funções simples: soma e subtração
def mat(num1, num2, fun=soma2):
return fun(num1, num2)
print(mat(2, 3))
print(mat(2, 2, subtracao))
# Nesta função definimos dois parâmetros obrigatórios e um opcional recebendo a função soma.
# Neste caso se o usuário informar uma outra função, ele vai aceitar.
# ESCOPO
# Variáveis globais
instrutor = 'Geek' # Variável global
def diga_ola():
return f'Olá, {instrutor}.'
print(diga_ola())
# Variáveis locais
def diga_oi():
instrutor = 'Python'
return f'Oi, {instrutor}.'
print(diga_oi())
# OBS: No caso das duas variáveis terem o mesmo nome, a variável local sobrepõe a variável global.
# ATENÇÃO: Se puder, evite variáveis globais.
# Como utilizar uma variável global dentro de uma função:
total = 0
def incrementa():
global total # Avisando ao Python que estamos usando a variável global dentro da função!
total += 1
return total
print(incrementa())
print(incrementa())
print(incrementa())
# Podemos ter funções que são declaradas dentro de funções, e também tem uma forma especial de escopo de variável:
def fora():
contador = 0
def dentro():
nonlocal contador
contador += 1
return contador
return dentro()
print(fora())