Imaginez qu'il existe trois fonctions, toutes acceptant et retournant le même type d'arguments.
" carte ". Vous savez dans Mathematica, nous pouvons écrire ceci comme fun3 @ fun2 @ fun1 @ args .
Maintenant, la question est de savoir si nous pouvons intégrer fun3 @ fun2 @ fun1 comme un autre plaisir sans modifier leur définition, donc fun (args) peut remplacer fun3 (fun2 (fun1 (args)) , cela semble plus élégant et concis.
3 Réponses :
Je pense que vous pouvez utiliser Function Recursion en python pour ce faire.
def function(args, times):
print(f"{times} Times - {args}")
if times > 0 :
function(args,times - 1)
function("test", 2)
Remarque: j'ajoute simplement un argument times pour ne pas générer de boucle infinie. p >
ça me donne que ça va loin.
Je ne suis pas certain de comprendre votre question, mais parlez-vous de la composition de fonctions dans ce sens?
cela fonctionne aussi, mais il ne sépare pas la nouvelle génération de fonction et son appel de paramètre, 'compose' renvoie le résultat final, pas la nouvelle fonction。
@eason OK, maintenant je pense que je comprends votre objectif. Voir la réponse modifiée.
absolument, l'utilisation de fermetures, ça m'a frappé, mais je suis un python d'introduction.
steps = [power_ten, plus_one, double_it] reduce(lambda a, f: f(a), steps, 3) > 3486902500
vraiment cool, c'est mon idéal, surtout que la combinaison de lambda et de réduire me convient, c'est une puce de la mathématique "f @@ expr ou Apply [f, expr]" comme f2 @ f1 @ t donne f2 [f1 [ t]], sans définir de fonction. Merci