Uma função Python pode ser um argumento de outra função?
Dizer:
def myfunc(anotherfunc, extraArgs):
# run anotherfunc and also pass the values from extraArgs to it
pass
Portanto, são basicamente duas perguntas:
- Isso é permitido?
- E se for, como faço para usar a função dentro da outra função? Eu precisaria usar exec (), eval () ou algo parecido? Nunca precisei mexer com eles.
BTW, extraArgs é uma lista / tupla dos argumentos de outro função.
Respostas:
Sim.
Para ser mais específico ... com vários argumentos ...
fonte
Esta é outra maneira de usar
*args
(e também opcionalmente)**kwargs
:Resultado
Note-se que
function
,*args
,**kwargs
tem que ser nessa ordem e têm que ser os últimos argumentos para a função de chamar a função.fonte
As funções em Python são objetos de primeira classe. Mas sua definição de função está um pouco errada .
fonte
Claro, é por isso que o python implementa os seguintes métodos em que o primeiro parâmetro é uma função:
fonte
anotherfunc(*extraArgs)
fonte
Por exemplo:
Quando você liga para myfunc, você faz o seguinte:
Isso imprimirá o valor de retorno de anotherfunc.
Espero que isto ajude!
fonte
Função dentro da função: também podemos usar a função como parâmetro ..
Em outras palavras, podemos dizer que a saída de uma função também é uma referência para um objeto, veja abaixo como a saída da função interna está se referindo à função externa como abaixo.
o resultado será .. 14
Espero que isto ajude.
fonte
fonte
Acho que seria uma amostra mais adequada. Agora, o que me pergunto é se há uma maneira de codificar a função para usar no envio do argumento para outra função. Acredito que haja em C ++, mas em Python não tenho certeza.
fonte
Os decoradores são muito poderosos em Python, pois permitem que os programadores passem a função como argumento e também podem definir a função dentro de outra função.
Resultado
fonte