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