Enumeration

Auparavant, nous faisions comme ceci :

i = 0
for item in iterable:
    print i, item
    i += 1

Maintenant, nous faisons comme ceci :

for i, item in enumerate(iterable):
    print i, item

La fonction enumerate peut aussi accepter un second paramètre, comme ceci :

>>> list(enumerate('abc')) 
[(0, 'a'), (1, 'b'), (2, 'c')] 
 
>>> list(enumerate('abc', 1)) 
[(1, 'a'), (2, 'b'), (3, 'c')]

Compréhension de dictionnaire/ensemble

Vous savez peut-être faire de la compréhension de liste, mais peut-être pas de la compréhension de dictionnaire/ensemble. Elles sont simples, faciles à utiliser et efficaces. Comme dans l’exemple ci-dessous :

my_dict = {i: i * i for i in xrange(100)} 
my_set = {i * 15 for i in xrange(100)}
 
# There is only a difference of ':' in both
 
# 两者的区别在于字典推导中有冒号

Forcer la division en virgule flottante

Si nous divisons un entier, même si le résultat est un float, Python 2 (note de l’éditeur : j’ai ajouté le numéro de version ici) nous donnera quand même un entier. Pour éviter ce problème, nous devons faire ceci :

result = 1.0/2

Mais maintenant, il existe une autre façon de résoudre ce problème, et je ne savais même pas qu’une telle méthode existait auparavant. Vous pouvez faire ce qui suit :

from __future__ import division 
result = 1/2
# print(result)
# 0.5

Voyez, maintenant vous n’avez plus besoin d’ajouter ".0" aux données pour obtenir la réponse exacte. Notez que cette astuce ne fonctionne que dans Python 2. Dans Python 3, vous n’avez pas besoin d’effectuer l’import, car il est déjà importé par défaut.

Serveur simple

Voulez-vous partager rapidement et facilement des fichiers dans un répertoire ? Vous pouvez le faire comme ceci :

# Python2
python -m SimpleHTTPServer

# Python 3
python3 -m http.server

Cela démarrera un serveur.

Évaluation d’expressions Python

Nous connaissons tous la fonction eval, mais connaissons-nous la fonction literal_eval ? Peut-être que beaucoup de gens ne la connaissent pas. Vous pouvez utiliser cette opération :

import ast 
my_list = ast.literal_eval(expr)

pour remplacer l'opération suivante :

expr = "[1, 2, 3]"
my_list = eval(expr)

Je pense que cette forme est vue pour la première fois par la plupart des gens, mais en fait elle existe déjà en Python depuis longtemps.

Profilage de scripts

Vous pouvez facilement profiler des scripts en exécutant le code suivant :

python -m cProfile my_script.py

Introspection d'objet

En Python, vous pouvez inspecter des objets avec la fonction dir(). Comme dans l'exemple ci-dessous :

>>> foo = [1, 2, 3, 4]
>>> dir(foo) 
['__add__', '__class__', '__contains__', 
'__delattr__', '__delitem__', '__delslice__', ... , 
'extend', 'index', 'insert', 'pop', 'remove', 
'reverse', 'sort']

Débogage de scripts

Vous pouvez facilement définir des points d'arrêt dans votre script via le module pdb. Comme dans l'exemple ci-dessous :

import pdb
pdb.set_trace()

Vous pouvez ajouter pdb.set_trace() n'importe où dans votre script, et cette fonction définira un point d'arrêt à cette position.

Simplification des instructions if

Si vous devez vérifier plusieurs valeurs, vous pouvez utiliser la méthode suivante :

if n in [1,4,5,6]:

pour remplacer la manière suivante :

if n==1 or n==4 or n==5 or n==6:

Inversion de chaînes/séquences

Vous pouvez rapidement inverser une séquence avec la méthode suivante :

>>> a = [1,2,3,4]
>>> a[::-1]
[4, 3, 2, 1]
 
# This creates a new reversed list. 
# If you want to reverse a list in place you can do:
 
a.reverse()

Cette méthode fonctionne aussi pour inverser des chaînes de caractères :

>>> foo = "yasoob"
>>> foo[::-1]
'boosay'

Impression formatée

Vous pouvez afficher de manière lisible des dictionnaires et des séquences de la façon suivante :

from pprint import pprint 
pprint(my_dict)

Cette façon est plus efficace pour imprimer des dictionnaires. De plus, si vous voulez afficher de manière lisible un document JSON à partir d'un fichier, vous pouvez utiliser la méthode suivante :

cat file.json | python -m json.tool

Opérateur ternaire

L'opérateur ternaire est un raccourci pour les instructions if-else, également appelé expression conditionnelle. Voici quelques exemples pour référence ; ils peuvent rendre votre code plus compact et plus élégant.

[on_true] if [expression] else [on_false]
x, y = 50, 25
small = x if x < y else y