# PyCharm

Pycharm est un environnement complet qui permet le développement de projets Python.

## Notions

# Les modules

Le code python peut être sauvegardé dans des modules. Un module est un objet chargé dans l’interpréteur à partir d’un fichier texte. L’extension du fichier est habituellement .py

L’importation de module s’effectue par la directive import, l’importation d’un module s’effectue tout d’abord en recherchant dans le répertoire courant, puis dans les répertoires spécifiées dans le PYTHONPATH et enfin dans le répertoire d’installation de Python.

Différentes façons d’importer

    import module
    from module import element1, element2...
    from module import element1 as elem1

# Les paquets

Les paquets (package) constituent un deuxième niveau d’organisation, il s’agit de répertoires contenant des modules. Un répertoire est considéré comme un paquet si il contient un fichier __init__.py

# Conventions de nommage

> - Modules et paquets: mots courts, tout en minuscules avec des « soulignés » pour séparateur.

> - Classes: règle « CapWord », i.e., des mots à la suite avec une majuscule pour chaque.

> - Variables et functions: mots courts, tout en minuscules avec des « soulignés » pour séparateur.

> https://www.python.org/dev/peps/pep-0008/

> - Pour automatiser les contrôles d’écriture : black et flake8 (installation dans pycharm)

## Installation

L’installation du plugin Pycharm s’éffectue depuis l’exécutable ou le package proposé sur le site internet.

## Configuration

L’ensemble des configurations de Pycharm est accessible via: Window ‣ Preferences

### Configuration de l’interpréteur python

Commençons par préciser le chemin de l’interpréteur python: Window ‣ Preferences ‣ Project: session expert

Sélectionnez l’interpreteur, Pycharm s’occupe d’ajouter dans son path l’ensemble des librairies présentes dans l’installation du python.

### Configuration de l’éditeur

Dans la fenêtre des préférences choisissez Window ‣ Preferences ‣ Editor

Dans l’onglet Code Style, assurez vous bien que les tabulations sont bien sur 4 cases.

De cette façon, lors de l’utilisation de la touche tabulation dans l’editeur, 4 espaces seront générés, ce qui est le standard Python.

Toujours dans la fenêtre des préférences, allez dans Window ‣ Preferences ‣ Editor ‣ File Encodings et assurez vous là encore que l’encodage proposé est bien « utf-8 ».

## Création d’un nouveau projet

Dans la barre des menus aller dans File ‣ New Project

Dans cette fenêtre, précisez:

- l’emplacement du dossier (qui fera le nom du projet);

- l’interpréteur parmi ceux connus ou à retrouver via l’emplacement du binaire python.

Le fonctionnement interne de Pycharm nécessite de définir un dossier comme dossier des sources. Tout package ou module à l’intérieur de ce dossier sera ajouté automatiquement au PYTHON_PATH.

Si d’autres projets ont été créés il est possible de déclarer des projets référencés, i.e. des projets dépendants. Le chemin des projets dépendants sera alors ajoutés automatiquement au PYTHON_PATH.

Conclure en cliquant sur Create.

Le projet est maintenant présent dans le panneau Project.

## Création d’un package

Nous allons maintenant créér un nouveau package (dossier dans l’espace de nommage python pour regrouper des modules).

Allez dans File ‣ New ‣Python Package. Précisez le nom du paquet.

Concluez en cliquant sur le bouton Ok.

Pycharm a créé un dossier contenant le fichier __init__.py. Nous avons donc bien un package.

## Création d’un module

Créons maintenant à l’intérieur de ce package un module python (python file).

Aller dans File ‣ New ‣ Python File.

Précisez:

- le nom du module;

- le type (cas des fichiers pour les tests unitaires).

Concluez en cliquant sur le bouton Ok.

Le module ainsi créé est visible dans le package.

## Éléments graphiques de l’éditeur

Pour découvrir les fonctionnalités de Pycharm nous allons écrire la classe Acteur qui modélise un acteur. Un acteur possède un nom.

    #coding: utf-8
    __author__ = 'nicolasperrier'

    class Acteur(object):
        """
        Pour creer des acteurs
        """
        def __init__(self,nom):
            """
            :param nom: chaine
            :return:
            """
            self.__nom = nom

        def get_nom_acteur(self):
            """recuperer le nom de l'acteur"""
            return self.__nom

        def set_nom_acteur(self,nouveau_nom):
            """ positionne le nom de l'acteur"""
            self.__nom = nouveau_nom

        def estMonJumeau(self, acteur):
            """ voir si on a le meme nom. Retourne vrai ou faux"""
            test1 = self.__nom == acteur.get_nom_acteur()
            return test1

        def __eq__(self, acteur):
            """ compatibilite avec == du langage"""
            return self.estMonJumeau(acteur)

        def __str__(self):
            """

            :return:
            """
            return 'Acteur : {}'.format(self.__nom)

    if __name__=='__main__':
        act1 = Acteur('Robert Deniro')
        act2 = Acteur('Nicolas Perrier')
        print(act1)
        print(act2)

        print(act1==act2)

L’écriture de cette classe aura permis de découvrir certaines fonctionnalités de l’éditeur.

- Coloration syntaxique:La coloration syntaxique de l’éditeur est une des premières fonctionnalités à apporter dans un environnement de développement. Il est possible de modifier les couleurs utilisées dans les préférences de Pycharm Window ‣ Preferences ‣ Editor et modifiez les couleurs qui ne vous conviennent pas.

- Indentation: L’éditeur facilite la position du curseur en ajoutant automatiquement les espaces nécessaires, après la définition d’une classe par exemple. Le code sélectionné peut facilement être indenté ou désindenté grâce aux touches Tab et Shift + Tab.

- Gestion des commentaires: Il est parfois utile de commenter ou de décommenter toute une portion de code et rien n’est plus rébarbatif que d’ajouter ou supprimer le fameux # devant chaque ligne. Pycharm utilise une combinaison pour commenter/décommenter l’ensemble du code sélectionné.

- Surbrillance des éléments jumelés: Plus connue sous la dénomination anglaise de matching brackets highlighting, elle permet par un moyen visuelle de repérer facilement le partenaire d’un élément jumelé. Dans l’éditeur de Pycharm l’élément jumelé, un crochet ouvrant par exemple, est encadré de bleu quand le curseur se trouve sur son élément fermant.

- Correction syntaxique : Le souligné rouge signale toute erreur de syntaxe, le passage du curseur provoque l’apparition d’une infobulle dans laquelle l’erreur est expliquée.

## Console python interactive

Pour lancer la console python interactive, cliquez sur l’onglet python console situé en bas de l’interface.

La console python possède de nombreuses fonctionnalités (complétion de code, auto import…)

Exercice : Depuis cette console, créez votre premier acteur.

     >>> from acteur import Acteur
     >>> johnClesse = Acteur('John Cleese')
     >>> johnClesse.get_nom_acteur()
     'John Cleese'
     >>> johnClesse
    'Acteur: John Cleese'

## Utilisation du déboggeur

Le manuel sur Pycharm : http://confluence.jetbrains.com/display/PYH/Debugger

La première phase à effectuer est d’ajouter un breakpoint dans votre code.

Dans l’éditeur, choisissez la ligne de code où démarrer le debugger et simple cliquez à sa gauche. Le breakpoint est signalé visuellement par une petite boule rouge.

Lancez ensuite l’exécution de votre module en choisissant l’icône deboggeur.