Partage
  • Partager sur Facebook
  • Partager sur Twitter

exercice programmation fonctionnelle

programme python

    17 septembre 2020 à 22:55:59

    michelbillaud a écrit:

    Les lambdas, c'est des valeurs, et quand on a besoin de les mettre dans une variable, il n'y a aucune raison de s'en priver.

    Les lambdas, ce n'est PAS comme les fonctions, parce que ça capture des variables


    Je n'avais pas vu passer ce message. Je n'ai pas compris ce que tu veux dire par "capturer" une variable. Aussi, les lambdas sont des fonctions. Et les fonctions définies avec un def, sont aussi des valeurs, qui sont dans une variable. Donc la différence entre def et lambda n'est pas là.

    La différence entre def et lambda, c'est que le premier est une déclaration, le deuxième est une expression.

    En effet, en python on a des syntaxes pour des déclarations :

    a = 42
    
    if condition:
        print("coucou")
    else:
        print("blabla")
    
    liste = []
    for i in range(5):
        liste.append(i)
    
    def foo(x):
       return x ** 2
    
    


    et parfois, on peut faire la même chose avec une expression :

    (a := 42)
    
    print("coucou" if condition else "blabla")
    
    liste = [i for i in range(5)]
    
    foo = lambda x: x ** 2
    

    L'utilité des expressions, c'est qu'elles retournent un résultat, et elles peuvent être contenues dans une autre expression ou déclaration, sur la même ligne. Dans le cas du lambda, c'est souvent pour le passer directement en argument à une fonction :

    for i in map(lambda x: x ** 2, liste):
        ...

    Mais pas que, ça peut aussi servir à faire un dictionnaire de fonctions, etc...

    Mais si c'est pour assigner directement le lambda à une variable, cela ne présente aucun intérêt par rapport au def. De même qu'il est inutile d'assigner un variable avec un walrus comme dans mon exemple ligne 1. Ça n'apporte rien de plus au code, ça n'améliore pas la lisibilité (comme ça peut être le cas du ternary ou de la compréhension), et ça ne fait même pas gagner une ligne comme l'a montré entwanne.


    -
    Edité par thelinekioubeur 17 septembre 2020 à 22:57:45

    • Partager sur Facebook
    • Partager sur Twitter
      18 septembre 2020 à 5:31:45

      En fait j'avais en tête d'autres langages que python, dans lesquels on ne déclare pas de fonction dans une fonction. Remarque hors sujet donc.
      • Partager sur Facebook
      • Partager sur Twitter

      exercice programmation fonctionnelle

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown