No video

Le Currying : La Puissance de la Programmation Fonctionnelle en Python

  Рет қаралды 2,176

Code Avec Dave

Code Avec Dave

Күн бұрын

Si tu souhaites devenir un expert de Python et apprendre à créer un code exceptionnel : developerssecr...
Si tu veux rejoindre une communauté de développeurs actifs et motivés : / discord

Пікірлер: 11
@PstMrtem
@PstMrtem Ай бұрын
Hello, super video ! Ça serait cool de zoomer un peu dans l'ide parce que sur téléphone c'est assez dur de lire le code 😄
@codeavecdave
@codeavecdave Ай бұрын
Merci beaucoup ! Je ferais en sorte de zoomer encore plus dans les prochaines vidéos que je tourne
@RisitopLeVrai
@RisitopLeVrai Ай бұрын
Hello, merci pour cette initiative de présenter différents patterns avancés en python, c'est top d'avoir le courage de sa jeter à l'eau et de démarrer une chaîne technique ! Petite suggestion, ce serait cool je pense de réfléchir à démontrer la puissance du pattern dans une petite situation pratique, pour montrer que ce n'est pas juste plus compliqué pour le plaisir de faire plus compliqué. Pour le currying, il s'agirait de montrer clairement à travers un petit exemple pourquoi manipuler f(a, b) peut être moins pratique que manipuler f(a)(b). Par exemple si l'on souhaite utilise la fonction map() de python pour ajouter une extension (variable) à un ensemble de noms de fichiers, ce sera probablement plus simple et clair avec ce pattern qui permettra de faire map(add_ext(".txt"), names), map(add_ext(".json"), names) etc. plutôt que de passer par des lambda fonctions. Également peut-être de montrer qu'on peut ajouter un peu de logique dans la fonction de retour en fonction de l'agument ? Juste quelques idées comme ça, en tous cas merci pour le contenu c'est cool !
@codeavecdave
@codeavecdave Ай бұрын
Merci beaucoup ! Je prends note de tout ça, je pense que je ferais plus tard une vidéo plus avancée sur ce concept qui expliquera plus en détail comment l'utiliser dans un cas concret
@Sql37
@Sql37 Ай бұрын
Salut! Merci pr le partage, c'est cool tu abordes des choses méconnus des débutants, mais pr ns permettre de mieux comprendre l'utilité du truc je pense qu'il serait bien d'ajouter un cas pratique plus complexe
@codeavecdave
@codeavecdave Ай бұрын
Oui c'est vrai tu as raison, dans tous les cas je pense que je ferais une nouvelle version de cette vidéo plus développée et cette fois ci il y aura un exemple plus complexe et concret
@dtamien
@dtamien Ай бұрын
Merci
@ApprendreSansNecessite
@ApprendreSansNecessite Ай бұрын
Ce qui m'ennuie avec `partial` c'est que l'intellisense perd le docstring et la signature, en tout cas dans VS Code avec Pylance. Si je survole ta fonction ça me dira `partial[int]`, ce qui n'est pas du tout utile. À ce sujet, je déconseille d'annoter la valeur de retour de `ajouter_currying`. Déjà ça sert à rien, et puis si tu fais ça l'intellisense perd le nom des paramètres de `ajouter_b` D'un autre côté, j'ai vraiment du mal à utiliser le currying en python à cause du manque de support syntaxique, Si au moins on pouvait écrire `return def`. On a l'impression qu'une fonction currifiée est très compliquée alors que pas du tout, et essayer de l'exprimer avec des lambdas est non-seulement pire syntaxiquement, plus complexe au niveau des type hints, mais aussi très limitant parce que l'implémentation d'une lambda doit se limiter à une seule expression. Habituellement, j'utilise beaucoup le currying pour passer des dépendances à certaines fonctions avant de les injecter dans mon programme. C'est aussi très pratique lorsque l'on utilise un style tacite pour composer des fonctions ou utiliser des prédicats : on applique tous les paramètres sauf le principal, qui fait partie du pipeline. Mais pour que ce style ait un intérêt au niveau de la lisibilité, il faut que écrire des fonctions currifiées soit simple. Or en Python, j'ai l'impression que ça ne vaut pas le coup.
@codeavecdave
@codeavecdave Ай бұрын
Oui `partial[int]` ne donne aucune information et j'avoue que c'est peu pratique. J'espère que ça pourra s'améliorer dans le futur
@majvax
@majvax Ай бұрын
J'ai un exemple concret du currying que j'ai utilisé pour mon grand oral: def calculer_function_quadratique(A: Point, B: Point, C: Point) -> Callable[[int], int]: a = A.y / ((A.x - B.x) * (A.x - C.x)) + B.y / ((B.x - A.x) * (B.x - C.x)) + C.y / ((C.x - A.x) * (C.x - B.x)) b = - (A.y * (B.x + C.x) / ((A.x - B.x) * (A.x - C.x)) + B.y * (A.x + C.x) / ((B.x - A.x) * (B.x - C.x)) + C.y * (A.x + B.x) / ((C.x - A.x) * (C.x - B.x))) c = A.y * B.x * C.x / ((A.x - B.x) * (A.x - C.x)) + B.y * A.x * C.x / ((B.x - A.x) * (B.x - C.x)) + C.y * A.x * B.x / ((C.x - A.x) * (C.x - B.x)) return lambda x: int(a * x**2 + b * x + c) On a une méthode d'interpolation numérique et ici utiliser le currying permet réellement d'avoir un code plus performant et d'éviter un grand nombre de calcul inutile.(j'appelle cette fonction un peu moins de 2000 fois) A mon avis si une personne doit utiliser partial pour utiliser à la fois la méthode de manière "normale" et de manière "currying", je pense qu'il y a un problèmes d'architecture du code. Je reste ouvert au critique sur ce point cependant. Ceci dit très bonne introduction à ce sujet qui fait parfois peur tellement il est peu compris des personnes programmant uniquement en orienté objet. J'aurais cependant choisis un exemple plus parlant puisque celui ci paraît très inutile comme tu l'as dit. Ça ne fait pas bonne pub à un outil si utile😅
@codeavecdave
@codeavecdave Ай бұрын
Merci beaucoup ! Je vais prendre en compte cet exemple pour une future vidéo sur le sujet
Pydantic Tutorial • Solving Python's Biggest Problem
11:07
pixegami
Рет қаралды 264 М.
123 GO! Houseによる偽の舌ドッキリ 😂👅
00:20
123 GO! HOUSE Japanese
Рет қаралды 5 МЛН
Lehanga 🤣 #comedy #funny
00:31
Micky Makeover
Рет қаралды 30 МЛН
managed to catch #tiktok
00:16
Анастасия Тарасова
Рет қаралды 41 МЛН
Python : Les fonctions
36:08
Docstring
Рет қаралды 49 М.
Deviens un maître du code en 5 minutes chrono !
6:01
mister_F
Рет қаралды 8 М.
Les Décorateurs en Python Sont TELLEMENT Utiles
11:32
Code Avec Dave
Рет қаралды 2 М.
💡 QUEL language de PROGRAMMATION pour HACKERS ?
9:41
Hafnium - Sécurité informatique
Рет қаралды 10 М.
PyTest • REST API Integration Testing with Python
37:24
pixegami
Рет қаралды 81 М.
Les Dataclasses en Python Sont Incroyables, Voici Pourquoi
13:43
Code Avec Dave
Рет қаралды 2 М.
Le nouveau meilleur outil de hacking vient d'arriver
33:59
cocadmin
Рет қаралды 38 М.
J'ai codé une simulation pour comprendre l'égoïsme.
11:29
Code BH
Рет қаралды 827 М.
Python : La programmation orientée objet
25:20
Docstring
Рет қаралды 140 М.
123 GO! Houseによる偽の舌ドッキリ 😂👅
00:20
123 GO! HOUSE Japanese
Рет қаралды 5 МЛН