Eu gostaria de chamar uma função em python usando um dicionário.
Aqui está um código:
d = dict(param='test')
def f(param):
print(param)
f(d)
Isso imprime, {'param': 'test'}
mas eu gostaria que fosse impresso test
.
Eu gostaria que funcionasse da mesma forma para mais parâmetros:
d = dict(p1=1, p2=2)
def f2(p1, p2):
print(p1, p2)
f2(d)
Isso é possível?
python
function
dictionary
parameters
keyword
Dave Hillier
fonte
fonte
Alguns detalhes extras que podem ser úteis para você saber (perguntas que tive depois de ler isso e testá-lo):
Exemplos:
Número 1: A função pode ter parâmetros que não estão incluídos no dicionário
Número 2: você não pode substituir um parâmetro que já está no dicionário
Número 3: o dicionário não pode ter parâmetros que não estão na função.
Conforme solicitado nos comentários, uma solução para o Número 3 é filtrar o dicionário com base nos argumentos de palavra-chave disponíveis na função:
Outra opção é aceitar (e ignorar) kwargs adicionais em sua função:
Observe além do que você pode usar argumentos posicionais, listas ou tuplas efetivamente da mesma maneira que kwargs, aqui está um exemplo mais avançado que incorpora argumentos posicionais e de palavras-chave:
fonte
'hello {greeting} {name}'.format( **{'name': 'Andrew', 'greeting': 'Mr'})
Em python, isso é chamado de "descompactar" e você pode encontrar um pouco sobre isso no tutorial . A documentação dele é péssima, eu concordo, especialmente por causa de quão fantasticamente útil é.
fonte
Aqui está - funciona qualquer outra iterável:
fonte