Je suis en train de mettre en œuvre cette exigence:
Dans le cadre d'un pipeline de traitement de données, remplissez la mise en œuvre de la méthode du pipeline: P>
La méthode doit accepter un nombre variable de fonctions, et devrait renvoyer une nouvelle fonction qui accepte un paramètre arg em>. p> li>
La fonction renvoyée doit appeler la première fonction dans le pipeline avec le paramètre arg em> et appelez la deuxième fonction avec le résultat de la première fonction. P> li>
La fonction renvoyée doit continuer à appeler chaque fonction dans le pipeline dans l'ordre, après le même modèle et renvoyer la valeur de la dernière fonction. P> li> ul>
Par exemple,
Pipeline (Lambda X: X * 3, Lambda X: X + 1, Lambda X: X / 2) Code> Puis appelant la fonction renvoyée avec 3 devrait renvoyer 5,0. P > blockQuote>mon code h1>
xxx pré> question h1>
Aucune code> est retourné. Pourquoi? P>before returning, helper value is: 5.0 final result: None
4 Réponses :
Le problème est que vous n'exécutez pas un Il n'est pas vraiment clair pourquoi vous avez une liste retour code> juste après votre Imprimer code>. Vous do em> ont un retour code> dans la branche el / code> juste avant, mais pas dans le bloc si code> bloc. De plus, la Helper code> Vous avez également ci-dessous n'appartient pas au bloc de fonction code> def code>, de sorte que vous avez besoin d'un autre de retour code>. J'aurais en fait omettre le bloc sinon code>, et tout simplement faire le retour, comme ceci: res code>, car il n'y a qu'une seule valeur à passer d'une fonction à la suivante. Vous pouvez simplement utiliser arg code> à cet effet. En outre, vous utilisez assistant code> dans deux sens différents (fonction et valeur) qui est assez déroutant. Le code peut être simplifié à ceci: p>
Grande Trincot. J'ai utilisé votre code et j'ai parfaitement travaillé. Très appréciée
Vous faites: impression ('avant le retour, la valeur de l'assistance est:', aide) code> ... et ne renvoie rien à partir de assistant code> < / em>, donc cela renvoie implicitement aucun code>. p>
Ne pas inventer ce qui est déjà disponible dans Python
from functools import reduce pipeline = [lambda x: x * 3, lambda x: x + 1, lambda x: x / 2] val = reduce(lambda x, f: f(x), pipeline, 3) print(val) # 5.0
Ne devrait-il pas être à partir de FuncTools importer réduire code>?
Le code d'origine provenait d'une question de codage d'entretien - niveau du niveau de python et je suis juste au niveau débutant, je suis au courant de réduire l'API. Je n'essaie pas de réinventer!
lol considérez que ces fabricants d'essais ont échoué le niveau facile pour Python
def pipeline(*args):
def helper(num):
for i in args:
total=i(num)
num=total
return total
return helper
fun = pipeline(lambda x: x * 3, lambda x: x + 1, lambda x: x / 2)
print(fun(3)) #should print 5.0
J'ai fait la mise en œuvre du code Python 3 et j'ai atteint le résultat final comme 5.0, mais avec l'aide de retour, elle n'en retournera qu'aucun