- Inscription
Langue : [automatic], [fr], [en], … | Allez on remonte !
« Retourner à la documentation

Python Usefull Tricks [EN / FR]



[fr] Français | [en] English | [global] Les deux
<en> Not enough often mentionned, some usefull builtins or not functions should be more hightlighted.

<fr> Pas assez souvent mentionnées, certaines fonctions de Python devraient pourtant être mises plus souvent en avant.

<en> I share these with you, cause i've too often needed them without knowing they existed.

<fr> Si je partage ça avec vous, c'est car j'ai trop souvent été confronté à des problèmes où il m'aurait été bien utile de connaitre ces fonctions avant.

<en> Builtins functions:
- dir(obj): Return a list of the object's properties.
- vars(obj): Return a dictionnary whose the keys are the properties' name (see dir()) and the values are the value of these properties
- help(obj): Display the interactive help (without needing to display __doc__ ourselves). Press Q to quit.

<fr> Fonctions embarquées de base (builtins) :
- dir(obj): Retourne une liste des propriétés de l'objet.
- vars(obj): Retourne un dictionnaire dont les clés sont les noms des propriétés (voir dir()) et dont les valeurs sont ces propriétés.
- help(obj): Permet d'afficher l'aide interactive (sans devoir afficher soit même l'attribut __doc__). Appuyez sur Q pour quitter.

<en> Module functions: (Don't forget to import what is needed)

itertools:
- count(start[, step]) (is infinite :D)
- repeat(elem[, n]) (replace (elem for i range(n)) where i is useless) (can be infinite if n not given) (See generator)
- chain(p, q, …) (replace p.extend(q) which modify p but returns nothing)
- … and so on

<fr> Fonctions appartenant à des modules : (N'oublier pas d'importer les modules respectifs)

itertools:
- count(start[, step]) (est infinie :D)
- repeat(elem[, n]) (remplace (elem for i range(n)) où i est inutile) (peut être infini si n n'est pas donné) (Voir les générateurs)
- chain(p, q, …) (remplace p.extend(q) qui modifie p sur place mais ne retourne ne rien)
- … et j'en passe

<en> Random Tricks:

<fr> Astuces :

<en> Good to know: Simply because two vars display the same way doesn't mean they are equals.

<fr> Bon à savoir : Ce n'est pas parce que deux variables ont la même représentation graphique qu'elle sont égales.

<en> Example: 1.7 == (0.8 + 0.9)
Will return False.

<fr> Exemple : 1.7 == (0.8 + 0.9)
Retournera Faux.

<en> => How to fix?

>>> a = 1.7
>>> b = 0.8 + 0.9
>>>
>>> abs(a-b) < 0.00001
True
>>> str(a) == str(b)
True (not always in python 3)
>>> round(a, 2) == round(b, 2)
True (my favorite)

<fr> => Comment régler ce prob ?

>>> a = 1.7
>>> b = 0.8 + 0.9
>>>
>>> abs(a-b) < 0.00001
True
>>> str(a) == str(b)
True (pas toujours en python 3)
>>> round(a, 2) == round(b, 2)
True (mon préféré)

<en> (See http://sebsauvage.net/python/snyppets/#binary_repr and http://cereales.lapin.org/index.php?number=2829 )

<fr> (Voir http://sebsauvage.net/rhaa/index.php?2012/01/27/12/25/35-1-7-est-different-de-1-7- et http://cereales.lapin.org/index.php?number=2829 )

<en> EDIT: Rather than using a hack, if you need your calculs to be accurate, you can also use the Fraction module avaible since 2.6 ( http://docs.python.org/3/library/fractions.html )
<fr> EDIT: Plutôt que d'utiliser un hack, si vous avez besoin de précisions dans vos calculs, vous pouvez aussi utilisez le module Fraction disponible depuis la 2.6 ( http://docs.python.org/3/library/fractions.html )



Ndlr: Je projette de faire ça sous forme de tableau Ceci est remplacé par Cela.

Lien doc officielle: http://docs.python.org/py3k/library/itertools.html
Voir aussi le module operator et le module functools.

Avant d'allez plus loin, j'aimerais également vous faire part de ce petit tuto très intéressant révélant la véritable puissance cachée de Python aux novices.
Je pense notamment au liste de compréhension, aux générateurs, aux décorateurs, etc:
http://www.siteduzero.com/tutoriel-3-33509-pratiques-avancees-et-meconnues-en-python.html

Oh et il est bon se savoir qu'il est possible de faire des ensembles de compréhension, des dictionnaires de compréhension. (Je détaillerais plus tard).

Et que, même si tous ça c'est super chouette, parfois il vaut mieux utiliser filter ou map :) (ça aussi j'y reviendrais)

Bref, comme vous l'avez compris, j'en ai pas fini avec cet article. J'espère que cette ébauche vous sera déjà utile ;)

D'autres liens sur le sujet : http://sametmax.com/astuces-python-en-vrac-bis
Dernière modification le 24/06/2013 à 21h18
» Commenter cet article / 1 commentaire(s)