doc:devel:python
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
doc:devel:python [2016/03/30 15:23] – external edit 127.0.0.1 | doc:devel:python [2018/05/04 17:14] (current) – removed boman | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | | ||
- | ====== Interface python ====== | ||
- | |||
- | ===== Qu'est ce que c'est? ===== | ||
- | |||
- | |||
- | Python est un langage interprété (comme le shell unix, matlab, etc) qui ressemble un peu à l' | ||
- | |||
- | Pour moi, c'est LA solution idéale pour interfacer un code de calcul avec la ligne de commande. | ||
- | |||
- | Pour la petite histoire, Python a été inventé par Guido van Rossum en 1990 (c' | ||
- | |||
- | Pour en savoir plus sur ce fabuleux langage (n' | ||
- | |||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | |||
- | ===== Python vs l' | ||
- | |||
- | |||
- | Le combat est assez inégal, et perdu d' | ||
- | |||
- | ^ | ||
- | | Extensible | via les I_, bon courage ! | oui (classes interprétées, | ||
- | | Modulaire | non - pas de notion de package - conflits de noms fréquents | namespaces (modules) | | ||
- | | Rapide | bof (pas de hashMap) | oui (fichiers compilés, portables .pyc, hashMaps intégrées) | | ||
- | | Gestion des erreurs | peu fiable. Il a la mauvaise habitude de ne pas s' | ||
- | | Extensions | absentes - à programmer soi même. | réseau, MPI, graphisme (Tcl, Qt), système... - voir p.expl [[http:// | ||
- | | Syntaxe | pas claire (cfr ";" | ||
- | | Gestion mémoire | absente ou catastrophique, | ||
- | | Portable | bof - chaque nouvelle machine nécessite un portage fastidieux. | oui - toute plateforme | | ||
- | | Maintenance | non négligeable (à chaque mise à jour) | quasi nulle pour nous | | ||
- | | Bugs | nombreux (nombre croissant) - corrigés par nous | très peu - corrigés par d' | ||
- | | Debugueur | non | oui, intégré | | ||
- | | Licence | payant (pas pour nous mais...) | gratuit - même encore mieux: on peut le revendre! (voir [[http:// | ||
- | |||
- | Ajoutons à ca des petits " | ||
- | |||
- | En fait, tout ce qui peut se faire avec l' | ||
- | |||
- | Une application très simple de la puissance de Python serait de programmer l' | ||
- | |||
- | {{ : | ||
- | |||
- | Parmi les nombreuses choses que nous avions demandé à OE et qui nous sont maintenant accessible, citons (dans le désordre) : | ||
- | |||
- | * plus de memory leaks venant de l' | ||
- | * les " | ||
- | * arrêt de l' | ||
- | * les strings, les vecteurs, les tuples, les dictionnaires, | ||
- | * toutes les commandes sytèmes (ouvrir, fermer un fichier par exemple ; accès réseaux) | ||
- | * le path browser | ||
- | * interface directe avec matlab via [[http:// | ||
- | * interface directe avec GNUplot via [[http:// | ||
- | * interface directe avec Qt via [[http:// | ||
- | * possibilité de s' | ||
- | * possibilité de distribuer des applications " | ||
- | * plus de cast bidon lorsqu' | ||
- | * gestion automatique des pointeurs '' | ||
- | * ... | ||
- | |||
- | En un mot, on a d'un coup tout ce que Igor prétend faire pour la fin du mois dans sa présentation d' | ||
- | |||
- | |||
- | |||
- | Un exemple d' | ||
- | |||
- | Traceback (most recent call last): | ||
- | File "< | ||
- | File "/ | ||
- | module = __import__(domainTxt, | ||
- | File "/ | ||
- | excit.define(1, | ||
- | NameError: name ' | ||
- | |||
- | |||
- | ===== L' | ||
- | |||
- | |||
- | Python possède une API écrite en C qui permet d' | ||
- | |||
- | Cette interface n'est pas simple à écrire parce que l'API Python est complexe. J' | ||
- | |||
- | Swig n'est pas qu'un simple traducteur: il gère également la surcharge des fonctions membres (absentes dans python puisque les types d' | ||
- | |||
- | L' | ||
- | |||
- | Lorsqu' | ||
- | |||
- | meta(' | ||
- | |||
- | Contrairement à Oofelie, Python ne va pas commencer à parcourir les répertoires pour trouver '' | ||
- | |||
- | meta(' | ||
- | |||
- | c'est propre et net! | ||
- | |||
- | |||
- | ==== Qu'est ce qui m'a pris du temps si c'est si simple? ==== | ||
- | |||
- | |||
- | Avoir une première interface est très simple. Le premier problème était les cast implicites cachés derrière les '' | ||
- | |||
- | Après ceci, le premier résultat ne ressemblait pas trop à l' | ||
- | |||
- | loadingset.define(1, | ||
- | |||
- | ce qui est lourd. J'ai donc réussi à " | ||
- | |||
- | Même remarque pour les noms d' | ||
- | |||
- | |||
- | ===== Comment se mettre à Python? ===== | ||
- | |||
- | |||
- | * Facile: il suffit de lire la [[http:// | ||
- | * Autre moyen: regarder ce que j'ai fait dans '' | ||
- | * La syntaxe est extrêmement proche de celle d' | ||
- | * Je vous conseille aussi de jeter un oeil à Swig. | ||
- | * Vous pouvez également regarder l' | ||
- | |||
- | Pour démarrer: | ||
- | |||
- | * charger un fichier : '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * tout est objet (même une fonction) | ||
- | |||
- | Différences par rapport à l' | ||
- | |||
- | * il faut importer des modules via la commande '' | ||
- | * déclaration de variable inutile - et interdite ! ('' | ||
- | * toutes les variables sont des réfs ('' | ||
- | * syntaxe des constructeurs ('' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * une fonction '' | ||
- | * "#" | ||
- | * pas de blocs "'' | ||
- | * pas de ";" | ||
- | * pour quitter '' | ||
- | * ... | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- |
doc/devel/python.1459344184.txt.gz · Last modified: 2016/03/30 15:23 by 127.0.0.1