Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.md 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. title: Python 3 et __future__
  2. slug: python3-future
  3. date: 2013-01-01
  4. chapo: 2013 sera l'année de Python 3
  5. **2013 sera l'année de Python 3,** en tout cas je ferai tout ce que je peux pour que mes programmes/bibliothèques soient compatibles et je compte bien avoir des projets utilisant uniquement cette version, il est temps d'avancer. Je pensais être contraint d'utiliser *[2to3](http://docs.python.org/3/library/2to3.html)* ou *[six](http://pypi.python.org/pypi/six/)* mais ça ne me permettait pas d'y aller en douceur, jusqu'à ce que [Mathieu tweete](https://twitter.com/magopian/status/285308957021597699) une solution que je trouve élégante, [l'utilisation de \_\_future__](http://stackful.io/blog/quick-tips-on-making-your-code-python-3-ready/) permet en un seul import de vous préparer à Python 3 :
  6. #!python
  7. from __future__ import (print_function, division,
  8. absolute_import, unicode_literals)
  9. ce qui permet ensuite d'utiliser `print` comme une fonction dans votre code :
  10. #!python
  11. >>> print("Cool!")
  12. Cool!
  13. de faire des division d'`integer` qui ne renvoient pas zéro :
  14. #!python
  15. >>> 5/7
  16. 0.7142857142857143
  17. de faire des imports relatifs de manière explicite :
  18. #!python
  19. >>> from . import awesomeness
  20. et enfin, ce qui va permettre de vraiment avoir l'impression de coder en Python 3 et de prendre en compte ses spécificités relatives aux chaînes de caractères qui ont motivé la non comptabilité ascendante avec cette nouvelle version majeure du langage :
  21. #!python
  22. >>> "zOMG unicode by default"
  23. u"zOMG unicode by default"
  24. Utilisez explicitement le `b"string"` si vous souhaitez avoir le comportement par défaut à base de strings de Python 2.X. C'est un début, c'est insuffisant mais ça fait déjà avancer les choses en codant pour l'avenir tout en minimisant les contraintes associées.
  25. Puisqu'on parle de programmation, [Éric](http://n.survol.fr/n/if-less-programming) m'a fait découvrir la [if-less programmation](http://alisnic.github.com/posts/ifless/) :
  26. > It is obvious that we can’t avoid conditionals, especially when comparing primitive data types. But most of the time it is not considered a good practice to use ifs in a Object-Oriented language. So what is really wrong with conditionals in a Object Oriented language?
  27. Ce qui donne effectivement à réfléchir, surtout lorsque l'on utilise un langage comme Python qui donne une grande flexibilité à ce sujet.