====== Programmation en Python ====== ===== Environnements de programmation ===== IDE [[https://www.jetbrains.com/pycharm/|PyCharm]]\\ IDE [[https://www.spyder-ide.org/|Spyder]]\\ Distribution [[https://www.anaconda.com/distribution/|Anaconda]] incluant Spyder\\ Environnement pédagogique [[https://thonny.org/|Thonny]]\\ Environnement pédagogique [[https://edupython.tuxfamily.org/|EduPython]] ==== Editeurs de texte ==== [[https://www.sublimetext.com/|Sublime Text]]\\ [[https://notepad-plus-plus.org/fr/|Notepad++]]\\ [[https://visualstudio.microsoft.com/fr/|Visual Studio]] ===== Apprendre à programmer en Python ===== [[prog:python:python-support|Aide-mémoire perso]] JBP ===== Aides-mémoire et supports ===== On trouve des tonnes de tutos et de documents sur Python, ceux qui suivent sont des aide-mémoire très concis. {{ :prog:mementopython3.pdf |Mémento Python 3}} de Laurent Pointal, voir aussi son [[https://perso.limsi.fr/pointal/python:accueil|site]]\\ {{ :prog:memento_python_2c.pdf |Aide mémoire Python}} de Marc-Antoine Weisser\\ [[https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/doku.php/stu:python:python_notes|Aide mémoire]] de l'Université de Poitiers, ou bien document {{ :prog:aide_memoire_notes_sur_python_3.pdf |pdf}}\\ [[http://joly415.perso.math.cnrs.fr/memento_python.pdf|Aide mémoire]] de Émilien Joly et autres documents utiles sur son site (shell, matlab...)\\ [[https://learnxinyminutes.com/docs/python3/|Learn X in Y minutes]], where X=Python3 {{ :prog:manuel_edupython.pdf |Manuel Edu Python}} ===== Quelques bibliothèques utiles ===== **NumPy** pour manipuler des tableaux (mini [[prog:python:numpy|tuto]]) **SciPy**, basée sur NumPy, pour le calcul scientifique **matplotlib** pour les représentations graphiques de données et résultats **bokeh** pour des représentations graphiques interactives utilisables en ligne **pandas** pour l'analyse de données (structures de données et algorithmes) et **geopandas** pour des données géolocalisées **Pillow** issue de PIL, pour le traitement et la manipulation de fichiers image (mini [[prog:python:python-image|tutoriel]]) **Opencv** pour le traitement d'images et la vision par ordinateur scikit-image aka **Skimage** également pour le traitement d'images **Turtle** pour l'initiation à la programmation (tracé de graphiques simples avec la tortue) : {{ :prog:turtleref.pdf |aide mémoire}} **Cartopy** et **GeoPandas** pour la cartographie ainsi que **ipyleaflet** (extension de Jupyter notebooks) **Kivy** pour réaliser des interfaces-utilisateur graphiques (GUI multi plateforme) **Theano** pour le deep learning **pweave** pour générer des rapports scientifiques Python + arduino + OSC : [[https://www.acmesystems.it/touchosc|Tuto]] ===== Mises à jour avec Anaconda ===== conda update -n root conda conda update --all conda update anaconda-navigator ===== Quelques programmes ===== Initiation au [[prog:python:python-image|Traitement d'images]] Variations autour du [[prog:python:palindrome|palindrome]] Travail avec des [[prog:python:fichiers|fichiers]] Expérimentations avec [[prog:python:osc|OSC]] Expérimentation avec [[prog:python:python-arduino|Arduino]] Mini tuto [[prog:python:NumPy|NumPy]] ===== Bons usages ===== Ce n'est pas exigé par le compilateur, mais de bons usages de présentation permettent de faciliter la (re)lecture d'un programme. Un ensemble de règles d'usage est défini dans le [[https://www.python.org/dev/peps/pep-0008/|guide du style]] PEP8. On peut généralement paramétrer son éditeur de texte pour qu'il vérifie et signale les "erreurs" de style. Quelques éléments pour résumer : * Les opérateurs doivent être entourés d'espaces * Exception pour exprimer la priorité des opérateur * Ex. : ''c = (a+b) * (a-b)'' * Exception pour le passage de paramètres * Ex. ''def fonction(arg='valeur'):'' * Pas d'espaces à l'intérieur des parenthèses, crochets et accolades * Espace après '': '' et '', '' mais pas avant * Longueur des lignes limitée à 79 caractères, si nécessaire passer à la ligne et indenter * Imports de module : 1 par ligne et sauter 2 lignes avant la suite du code * Indentation : 4 espaces, pas de tabulation * Encodage UTF8 * Docstrings entourés de triples quotes * Noms de variables * Une seule lettre pour les boucles et les indices * Minuscules et underscores pour les variables, fonctions et méthodes * Majuscules et underscores pour les constantes * CamelCase pour les noms de classes ===== Essais de Jupyter Notebooks ===== Il faut préalablement créer un compte sur github de façon à héberger le code qui va être réalisé. Pour les petits programmes, un gist est préférable.\\ Installer localement la commande nbinteract qui va fabriquer le fichier html dynamique à partir du notebook.\\ ''pip install nbinteract'' * Créer un notebook et enregistrer le fichier ipynb * Charger ce notebook sous forme de gist dans github * Dans le dossier où est le fichier : ''nbinteract nom_notebook.ipynb -s user_github/id_gist'' * Modifier le fichier html nouvellement créé (remplacer gh par gist en toute fin du fichier) * Le fichier html est désormais opérationnel * ATTENTION ! si ce fichier est hébergé sur un serveur en http, il sera impossible de l'afficher dans ce wiki (https). La preuve : {{url>http://labotim.fr/notebooks/factorielle_recursive.html}} Références : [[https://www.codedisciples.in/embedding-jupyter.html]]\\ [[https://elc.github.io/posts/embed-interactive-notebooks/]]\\ [[https://www.nbinteract.com/tutorial/tutorial_intro.html]]\\