Feb 042010
 

J’aime lire du code des autres. Enfin quand c’est du code de qualité, bien entendu. (Parce que question code bien pourri… j’ai été servi, plus qu’à mon tour, sur les différentes reprises de projets complètement à la ramasse auxquels j’ai eu la joie de participer).

Pourquoi j’aime lire du code bien écrit ?

Parce que tout simplement, j’apprend beaucoup en faisant cela. Et parfois, je découvre des ‘trucs’, que je trouve tellement élégant que je me dis ‘mais comment je pouvais faire sans’.

C’est une des raisons qui fait que je me fais assez régulièrement des sessions de lecture du code du django. La dernière remonte à .. hier soir.

Et j’y ai découvert une écriture que je trouve très élégante. C’est celle-ci :

def func(foo):
    return foo

toto = func(arg) or "bip"

A quoi sert-elle ? elle permet de remplacer le code suivant :

def func(foo):
    return foo

bar = func(None)
toto = bar if bar else "bip"

Une petite explication en bon français ? (pas forcément utile, j’en conviens, vu la simplicité de la chose, mais bon).

Imaginons que l’on veuille donner une valeur à une variable. Cette valeur peut-être soit la valeur de retour d’une fonction, soit si le code de retour est None (ou False) une chaine de caractère. Sans le petit truc avec or, on est obligé d’écrire le code que j’ai mis juste au dessus et qui utilise une variable temporaire (et un opérateur if .. else .. que je n’aime pas trop).

Voila, je suis sur que je n’ai rien appris à personne, mais bon, on ne sait jamais.


Flattr this!

  2 Responses to “petit mémo python”

  1. Je fais pas beaucoup de python, tu m’as appris quelque chose 🙂

    Juste une remarque de pédagogie : pour que les exemples soient vraiment équivalent, remplace “other” par “bip”.

    Et sinon, j’aime bien le nouveau thème de ton blog.

    • t’as raison pour le “other” et le “bip”, je vais le faire tout de suite.

      Sinon, j’ai l’impression que personne n’aimait l’ancien thème, parce que tout les gens qui m’en parlent me disent préférés le nouveau.

      mais fallait me le dire que vous ne l’aimiez pas le premier. Je l’aurais changé plus tôt si j’avais su :).

Sorry, the comment form is closed at this time.