# Usages et bibliothèques

Le langage Python est accompagné de nombreux modules qui permettent aux développeurs d’avoir, de base, de nombreuses fonctionnalités. Dans ce chapitre nous allons étudier quelques modules présents dans le langage.

## Itérateurs VS Générateurs

Toute la clé réside dans le stockage mémoire de vos données !

https://docs.python.org/fr/3/tutorial/classes.html#iterators

    >>> # Build and return a list
    >>> def firstn(n):
    >>>     num, nums = 0, []
    >>>     while num < n:
    >>>         nums.append(num)
    >>>             num += 1
    >>>     return nums
    >>>
    >>> sum_of_first_n = sum(firstn(1000000))

Excercice : faites une approche par itérateur (pattern) de cette fonction. Faites de même avec un générateur.

https://wiki.python.org/moin/Generators#CA-31c8468eb74aeab199a158c358a0dcdea389911d_1

Les itérateurs amenés par Python en standard :

https://docs.python.org/3.7/library/itertools.html

## Passage d’arguments par fichier de configuration : ConfigParser

L’objectif est ici d’appliquer un parsing sur des fichiers type *.ini pour changer une configuration d’application sans altérer le code python.

Tutoriel et toutes les infos : https://docs.python.org/3.8/library/configparser.html Examples: https://wiki.python.org/moin/ConfigParserExamples

## Pré-traitement: les décorateurs

L’objectif est ici d’appliquer un pré-traitement au moment de l’appel d’une fonction. Un cas très concret: retourner le résultat d’une fonction dont le calcul a déjà été effectué (« cache »).

Pour bien comprendre, voici un tutoriel: https://openclassrooms.com/courses/apprenez-a-programmer-en-python/les-decorateurs

Exercice : obtenir le temps d’exécution d’une fonction en lui apposant un décorateur (via cProfile)

## Passage d’arguments: argparse

Faciliter le passage d’arguments pour votre module Python sans l’artisanal « argsysv » ! Tutoriel en ligne : Tutoriel : https://docs.python.org/3.7/howto/argparse.html

Exercice: tests_passage_arguments.py

## Module os

Le module os fournit un grand nombre de fonctions sur la manipulation du système.

    >>> import os

Exercice: tests_remplacer_motif_fichier_texte.py

## Module csv

Le module csv fournit un grand nombre de fonctions sur la manipulation de fichiers CSV.

    >>> import csv

Exercice: tests_csv.py

## Module Tkinter

Le module Tkinter fournit une bibliothèque complète pour la création d’interface utilisateur par progammation événementielle.

https://pythonbasics.org/tkinter/

    >>> from Tkinter import *

La bible Tkinter:

https://insolor.github.io/effbot-tkinterbook-archive/

Exercice : Interface Tk pour coder/décoder des fichiers ascii via le crytpage de César.