Technologie

80/20 Maîtriser python

Written by Eric Guillaume, CTO @ NEDA 9 mai 2019 12:33
80/20 Maîtriser python

Introduction

Cet article est le premier d’une série intitulée 80/20, ils ont un but pédagogique, sont simples et concis et fournissent 80% de la valeur en 20% du temps. L’idée sous-jacente est de donner les bases et de laisser le lecteur apprendre les nombreuses spécificités avancées par l’expérience au cours de ses projets ou à l’aide d’un support plus complet tel un livre.


Cet article présente les simplicités idiomatiques ainsi que les principales fonctionnalités de python qui permettent un gain de temps précieux à l’utilisation. Il n’a pas vocation à être complet et nécessitera d’autres articles similaires pour s’approprier toutes ses fonctionnalités, certains liens à cet effet seront fournis. 


Commençons par les principes de bases pour apprendre à programmer en python rapidement.


Principes pour apprendre python

En programmant dans un language et tout particulièrement en python, chaque fois que vous êtes amené à réaliser une tâche de reformatage de données sur plus d’une ligne (et surtout si vous avez besoin de 4/5 lignes), cela signifie qu’il y a probablement une fonctionnalité de base du language qui vous simplifierait la vie et votre code dont vous ignorez l’existence, il faut donc la chercher.


Un language de programmation comprend un nombre très important de fonctionnalités, tout maîtriser prend un temps considérable, il est donc préférable de se concentrer sur les bases et d’ensuite lire du code de développeurs confirmés afin d’identifier les éléments de languages intéressants qu’ils utilisent et d’apprendre uniquement ceux-ci.


Nous conseillons également vivement de relire plusieurs articles sur un thème (tel une introduction à python dans notre cas afin de mieux mémoriser les points appris et d’identifier les points redondants et donc les plus importants.


Meilleurs articles

Voici une liste d’articles que je conseille vivement de lire:

Bases

  1. #!/usr/bin/python3 # au début d'un fichier le rend exécutable dans bash
  2.  
  3. a = None # tout en python est un objet et tout objet python peut être None non définit
  4. a or b # retourne la première des variables qui n'est pas None sinon None
  5. None or 1 # retourne 1
  6.  
  7. assert(a == 1) # vérifie à l'exécution que a vaut 1, dans le cas contraire une exception est envoyée
  8.  
  9. "{},{}".format(1, 2) # écrit 1,2
  10. "{0},{0}".format(1) # écrit 1,1
  11.  
  12. x, y = y, x # inverse les 2 valeurs
  13. 1 < 2 < 3 # chaînage de conditions, vaut ici True
  14.  
  15. "foo" if 3 > 2 else "foo2" # condition sur une ligne, vaut foo
  16.  
  17.  
  18. # floats
  19. float("inf") # float représentant l'infini
  20. -float("inf") < sys.maxint < float("inf") # condition True, sys.maxint est l'integer régulier maximum de python
  21. min(float("inf"), 2) # vaut 2
  22. float("nan") # float représentant une valeur non définie et non comparable, nan signifie Not A Number
  23. float("nan") == float("nan") # condition False, ces floats sont non comparables
  24.  
  25. math.isnan(a) # vérifie que a est nan
  26.  
  27.  
  28. # boucles
  29. a = iter([1,2]) # transforme une liste en itérator qui peut ensuite être parcouru dans l'ordre
  30. next(a) # vaut 1
  31. next(a) # vaut 2
  32. next(a) # envois l'exception StopIteration
  33.  
  34. b = (x for x in range(10)) # est un generator qui implémente l'interface itérator, on peut donc faire next(b)

Structures

  1. # tuple
  2. (1,2) # tuple
  3. 1, 2 # même tuple
  4. tuple([1, 2]) # transforme une liste en tuple
  5.  
  6. # list
  7. list('abcd') # ['a', 'b', 'c', 'd']
  8. list(range(4)) # [0, 1, 2, 3]
  9. [2] + [1] == [2, 1] # condition True
  10. [1] * 3 == [1, 1, 1] # condition True
  11.  
  12. a = [1, 2, 3, 4, 5]
  13. a[start:end:step]
  14. a[::2] # [1, 3, 5]
  15. a[::-1] # en ordre inversé [5, 4, 3, 2, 1]
  16.  
  17. # set
  18. set("abc") # set with 3 elements, a, b and c
  19.  
  20. # dict
  21. filled_dict.setdefault("five", 5) 
  22. dict.keys() # retourne les clefs, ne respecte pas l'ordre d'insertion
  23.  
  24. {'a': 1, **{'b': 2}}  # unpacking {'a': 1, 'b': 2}



Powered by Froala Editor

Powered by Froala Editor