-
Notifications
You must be signed in to change notification settings - Fork 0
/
kwargs.py
52 lines (33 loc) · 1.46 KB
/
kwargs.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
"""
**kwargs
Este é só mais um parâmetro, mas diferente do *args que coloca valores extras em uma tupla, o **kwargs
exige que utilizemos parâmetros nomeados, e transforma esses parâmetros extras em um dicionário
def cores_favoritas(**kwargs):
for pessoas, cor in kwargs.items():
print(f'A cor favorita de {pessoas.title()} é {cor}')
cores_favoritas(marcos= 'Branco', heloisa= 'Azul', luca= 'Preto')
# OBS: Os parâmetros *argd e **kwargs não são obrigatórios
# Exemplo mais complexo:
def cumprimento_especial(**kwargs):
if 'geek' in kwargs and kwargs['geek'] == 'Python':
return 'Você recebeu um cumprimento Pythônico'
elif 'geek' in kwargs:
return f"{kwargs['geek']} Geek"
return 'Não sabemos avaliar quem é você'
print(cumprimento_especial())
print(cumprimento_especial(geek='Python'))
print(cumprimento_especial(geek='Eai'))
print(cumprimento_especial(geek='ESPECIAL'))
# Nas nossas funções devemos seguir (NESTA ORDEM):
- Parâmetros obrigatórios;
- *args;
- Parâmetro default (não obrigatório);
- **kwargs
# Desempacotar **kwargs
def nome_inteiro(**kwargs):
return f"{kwargs['nome']} {kwargs['sobrenome']}"
nomes = {'nome': 'Heloisa', 'sobrenome': 'Ferreira'}
print(nome_inteiro(nome= 'Heloisa', sobrenome= 'Ferreira')) # Forma 1
print(nome_inteiro(**nomes)) # Forma 2 utilizando a variável 'nomes'
# OBS: Os nomes das chaves de um dicionário, devem ser o mesmo dos parâmetros da função
"""