Comments on: Pourquoi ','.join en Python ? http://sametmax.com/pourquoi-join-en-python/ Deux développeurs en vadrouille qui se sortent les doigts du code Wed, 05 Feb 2014 12:15:31 +0000 hourly 1 http://wordpress.org/?v=3.3.1 By: Sam http://sametmax.com/pourquoi-join-en-python/#comment-1021 Sam Fri, 03 Aug 2012 12:12:18 +0000 http://sametmax.com/?p=1467#comment-1021 Voilà. Moi autant <code>','.join</code> me parle complètement, autant <code>len(obj)</code> à la place de <code>obj.length</code> je trouve ça bidon puisque <code>len()</code> ne fait qu'appeler __len__ de toute façon. Encore, si <code>len()</code> pouvait fallback sur <code>__iter__</code>, mais même pas. Voilà. Moi autant ','.join me parle complètement, autant len(obj) à la place de obj.length je trouve ça bidon puisque len() ne fait qu’appeler __len__ de toute façon. Encore, si len() pouvait fallback sur __iter__, mais même pas.

]]>
By: Romain http://sametmax.com/pourquoi-join-en-python/#comment-1016 Romain Fri, 03 Aug 2012 04:55:47 +0000 http://sametmax.com/?p=1467#comment-1016 OK implode est l'inverse d'explode mais PHP aurait pu coller à Perl et au reste du monde et utiliser split / join ! Pour les histoires de map / filter / reduce : c'est vrai que des fois, on a l'impression que Python ne sait pas trop choisir entre fonction et méthodes... Dans ce cadre là, c'est le choix de rendre l'objet iterable grâce à la méthode _iter_ et pas en rajoutant une tonne de méthodes comme avec un mixin comme dans Ruby (parce que Ruby ne rigole pas avec la taille des interfaces, c'est bien chiant d'ailleurs) OK implode est l’inverse d’explode mais PHP aurait pu coller à Perl et au reste du monde et utiliser split / join !

Pour les histoires de map / filter / reduce : c’est vrai que des fois, on a l’impression que Python ne sait pas trop choisir entre fonction et méthodes… Dans ce cadre là, c’est le choix de rendre l’objet iterable grâce à la méthode _iter_ et pas en rajoutant une tonne de méthodes comme avec un mixin comme dans Ruby (parce que Ruby ne rigole pas avec la taille des interfaces, c’est bien chiant d’ailleurs)

]]>
By: LeMeteore http://sametmax.com/pourquoi-join-en-python/#comment-1011 LeMeteore Thu, 02 Aug 2012 21:59:53 +0000 http://sametmax.com/?p=1467#comment-1011 Pourquoi map(func, iterable), merci pour l'explication. Je comprends mieux maintenant. J'ai un ami qui il y a longtemps m'avait expliqué que c'etait (entre autre?) pour encourager un style de programmation purement fonctionnel. Pourquoi map(func, iterable), merci pour l’explication. Je comprends mieux maintenant.

J’ai un ami qui il y a longtemps m’avait expliqué que c’etait (entre autre?) pour encourager un style de programmation purement fonctionnel.

]]>
By: Sam http://sametmax.com/pourquoi-join-en-python/#comment-1006 Sam Thu, 02 Aug 2012 19:07:56 +0000 http://sametmax.com/?p=1467#comment-1006 Pour la même raison: pour qu'on puisse passer n'importe quel itérable à map et filter. On peut faire un map/filter sur autre chose qu'un séquence. Un itérable doit juste remplir une seule condition: pouvoir récupérer des valeurs une à une. Si on suit la logique sequence.filter, sequence.map, sequence.join, alors on se retrouve à demander à tous les itérable d'implémenter un proxy de filter, map et join, ce qui revient à complexifier l'interface de chaque nouvel itérable codé. Python fonctionne en duck typing, si c'est itérable, on peut maper, on peut filtrer, on peut joiner. L'action de maper, filtrer, joiner est indépendance de l'itérable, et donc ne fait pas partie de son interface. Pour la même raison: pour qu’on puisse passer n’importe quel itérable à map et filter. On peut faire un map/filter sur autre chose qu’un séquence. Un itérable doit juste remplir une seule condition: pouvoir récupérer des valeurs une à une.

Si on suit la logique sequence.filter, sequence.map, sequence.join, alors on se retrouve à demander à tous les itérable d’implémenter un proxy de filter, map et join, ce qui revient à complexifier l’interface de chaque nouvel itérable codé.

Python fonctionne en duck typing, si c’est itérable, on peut maper, on peut filtrer, on peut joiner. L’action de maper, filtrer, joiner est indépendance de l’itérable, et donc ne fait pas partie de son interface.

]]>
By: shenshei http://sametmax.com/pourquoi-join-en-python/#comment-1004 shenshei Thu, 02 Aug 2012 18:48:08 +0000 http://sametmax.com/?p=1467#comment-1004 et pourquoi on a: <code>filter(function, sequence)</code> et <code>map(function, sequence)</code> et pas: <code>sequence.filter(function)</code> et <code>sequence.map(function)</code> car lors de l'imbrication de plusieurs <code>map</code> et <code>filter</code> la seconde solution est nettement plus lisible (pas besoin de jouer au poupées russes) et pourquoi on a:
filter(function, sequence) et map(function, sequence)
et pas:
sequence.filter(function) et sequence.map(function)

car lors de l’imbrication de plusieurs map et filter la seconde solution est nettement plus lisible (pas besoin de jouer au poupées russes)

]]>
By: PHPman http://sametmax.com/pourquoi-join-en-python/#comment-1003 PHPman Thu, 02 Aug 2012 18:37:36 +0000 http://sametmax.com/?p=1467#comment-1003 Parce que join = implode : <a href="http://in.php.net/manual/en/function.join.php" rel="nofollow">http://in.php.net/manual/en/function.join.php</a> Parce que join = implode :
http://in.php.net/manual/en/function.join.php

]]>
By: Sam http://sametmax.com/pourquoi-join-en-python/#comment-1000 Sam Thu, 02 Aug 2012 17:55:43 +0000 http://sametmax.com/?p=1467#comment-1000 Parceque c'est l'inverse d'explode :-) Parceque c’est l’inverse d’explode :-)

]]>
By: Romain http://sametmax.com/pourquoi-join-en-python/#comment-998 Romain Thu, 02 Aug 2012 17:48:40 +0000 http://sametmax.com/?p=1467#comment-998 ça fait un peu réfléchir à l'envers mais on s'y fait... Et encore c'est parce que les codeurs pensent de travers : ','.join(ma_liste) => ',' joint les éléments de ma liste Ce que propose Ruby roxe quand même pour ce qui est de la lisibilité, surtout associé à des blocs. Mais 'implode' en PHP ? pourquoi ? ça fait un peu réfléchir à l’envers mais on s’y fait… Et encore c’est parce que les codeurs pensent de travers :

‘,’.join(ma_liste) => ‘,’ joint les éléments de ma liste

Ce que propose Ruby roxe quand même pour ce qui est de la lisibilité, surtout associé à des blocs.

Mais ‘implode’ en PHP ? pourquoi ?

]]>