Une fonction Python peut-elle être un argument d'une autre fonction?
Dire:
def myfunc(anotherfunc, extraArgs):
# run anotherfunc and also pass the values from extraArgs to it
pass
Donc, ceci est essentiellement deux questions:
BTW, extraArgs est une liste/Tuple des arguments de anotherfunc.
Une fonction Python peut-elle être un argument d'une autre fonction?
Oui.
def myfunc(anotherfunc, extraArgs):
anotherfunc(*extraArgs)
Pour être plus précis ... avec différents arguments ...
>>> def x(a,b):
... print "param 1 %s param 2 %s"%(a,b)
...
>>> def y(z,t):
... z(*t)
...
>>> y(x,("hello","manuel"))
param 1 hello param 2 manuel
>>>
Voici un autre moyen d'utiliser *args
(et aussi éventuellement), **kwargs
:
def a(x, y):
print x, y
def b(other, function, *args, **kwargs):
function(*args, **kwargs)
print other
b('world', a, 'hello', 'dude')
Sortie
hello dude
world
Notez que function
, *args
, **kwargs
doivent être dans cet ordre et doivent être les derniers arguments de la fonction qui appelle la fonction.
Les fonctions en Python sont des objets de première classe. Mais votre fonction définition est un peu off .
def myfunc(anotherfunc, extraArgs, extraKwArgs):
return anotherfunc(*extraArgs, **extraKwArgs)
Bien sûr, c’est pourquoi python implémente les méthodes suivantes dans lesquelles le premier paramètre est une fonction:
Par exemple:
def anotherfunc(inputarg1, inputarg2):
pass
def myfunc(func = anotherfunc):
print func
Lorsque vous appelez myfunc, vous procédez comme suit:
myfunc(anotherfunc(inputarg1, inputarg2))
Cela affichera la valeur de retour de anotherfunc.
J'espère que cela t'aides!
anotherfunc(*extraArgs)
Fonction dans la fonction: nous pouvons aussi utiliser la fonction comme paramètre.
En d'autres termes, nous pouvons dire qu'une sortie d'une fonction est aussi une référence pour un objet. Voir ci-dessous comment la sortie d'une fonction interne fait référence à la fonction externe comme ci-dessous.
def out_func(a):
def in_func(b):
print(a + b + b + 3)
return in_func
obj = out_func(1)
print(obj(5))
le résultat sera… 14
J'espère que cela t'aides.
def x(a):
print(a)
return a
def y(func_to_run, a):
return func_to_run(a)
y(x, 1)
Je pense que cela constituerait un exemple plus approprié .. Maintenant, je me demande s’il existe un moyen de coder la fonction à utiliser dans la soumission d’arguments à une autre fonction. Je crois qu’il en existe en C++, mais en Python, je ne suis pas sûr.
def x(a):
print(a)
return a
def y(a):
return a
y(x(1))