teaching:progappchim:pieges

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
teaching:progappchim:pieges [2013/10/17 11:42] – créée villersdteaching:progappchim:pieges [2016/05/15 22:47] (Version actuelle) villersd
Ligne 10: Ligne 10:
  
 ===== Version de python ===== ===== Version de python =====
-  * les programmes en Python 3.x sont un peu différents de ceux en Python 2.7.y+  * les programmes en Python 3.x sont un peu différents de ceux en Python 2.7.y. La différence la plus fréquente est le passage de print à print(), parfois un changement de nom de librairie comme Tkinter en tkinter.
  
 ===== Indentations ===== ===== Indentations =====
-  * mélanger des espaces et des tabulations.+  * Ne pas mélanger des espaces et des tabulations ! Il est recommandé d'utiliser l'indentation par 4 espaces.
  
 ===== Symboles ===== ===== Symboles =====
   * = pour l'instruction d'affectation et == pour l'opérateur de comparaison   * = pour l'instruction d'affectation et == pour l'opérateur de comparaison
  
-==== l'affectation ne réalise pas une copie ===== +===== l'affectation ne réalise pas une copie ===== 
-Lorsqu'on travaille avec des objets listes (ou d'autres objets), l'instruction utilisant un signe "=" (nom=objet) ne réalise pas une copie, mais donne un second nom au même objet. Si on le manipule (le modifie) en utilisant une des appelations, on peut vérifier l'effet, en tapant les instructions suivantes dans l'interpréteur Python :+Lorsqu'on travaille avec des objets listes (ou d'autres objets), l'instruction utilisant un signe "=" (nom=objet) ne réalise pas une copie, mais donne un second nom au même objet. Si on le manipule (le modifie) en utilisant une des appellations, on peut vérifier l'effet, en tapant les instructions suivantes dans l'interpréteur Python :
 <code> <code>
 a=1 a=1
Ligne 25: Ligne 25:
 c=[] c=[]
 c.append(a) c.append(a)
-print c+print(c)
 d=c d=c
-print d+print(d)
 c.append(b) c.append(b)
-print d+print(d)
 </code> </code>
  
Ligne 38: Ligne 38:
 v=u v=u
 u=2*u u=2*u
-print v+print(v)
 </code> </code>
 +
 +===== Confusion dans les directives d'importation de librairies =====
 +Il y a 2 façons d'importer toutes les fonctionnalités définies dans un module "nomdemodule" :
 +
 +  * import nomdemodule
 +  * from nomdemodule import *
 +
 +Dans le premier cas, les fonctions seront appelables avec des noms tels que "nomdemodule.func1", tandis que dans le deuxième mode, la même fonction sera utilisable avec le nom "func1". La deuxième méthode permet également de n'importer qu'une seule fonction particulière au lieu de toutes celles qui sont dans le module (avec *). Exemple :
 +
 +  * from nomdemodule import func13
 +
 +Pourquoi 2 façons de faire : l'importation via "from" est simple et permet de s'affranchir de l'écriture du namespace. Cependant, si plusieurs fonctions cohabitent avec des mêmes nom, cela va poser des problèmes car une seule, pas nécessairement "la bonne" sera effective !
 +
 +référence : [[http://effbot.org/zone/import-confusion.htm]]
 +
 +Suggestion : pour comprendre, essayez par exemple ces directives en mode interactif sur le module math.
 +
 +FIXME : intégrer [[http://lignos.org/py_antipatterns/|ces astuces]]
 +
 +===== Voir aussi : =====
 +  * [[http://fr.slideshare.net/pydanny/python-worst-practices]]
  • teaching/progappchim/pieges.1382002961.txt.gz
  • Dernière modification : 2013/10/17 11:42
  • de villersd