Python

Programmation et Logique dans l'Étude de la Connaissance

🐍 1. Introduction à Python

Qu'est-ce que Python ?

Python est un langage de programmation interprété, orienté objet et de haut niveau, avec une sémantique dynamique. Sa philosophie de conception met l'accent sur la lisibilité du code, ce qui réduit le coût de maintenance d'un programme.

Histoire de Python

Créé par Guido van Rossum et publié pour la première fois en 1991, Python porte le nom du groupe comique britannique Monty Python. Le langage a été conçu pour être agréable à lire et à écrire.

Applications de Python

  • Développement web (Django, Flask)
  • Science des données et analyse (Pandas, NumPy)
  • Intelligence artificielle et machine learning (TensorFlow, PyTorch)
  • Automatisation et scripts système
  • Développement de jeux (Pygame)
  • Analyse documentaire et RAG (Recherche Augmentée par Génération) - voir le module RAG

💻 2. Bases de Python

Syntaxe de Base

Python utilise l'indentation pour définir les blocs de code, contrairement à d'autres langages qui utilisent des accolades.

Variables et Types de Données


# Variables
nom = "Python"
version = 3.9
est_interprete = True

# Types de données
entier = 42
flottant = 3.14159
chaine = "Bonjour le monde"
liste = [1, 2, 3, 4, 5]
dictionnaire = {"langage": "Python", "version": 3.9}
                

Opérations de Base


# Opérations arithmétiques
addition = 5 + 3
soustraction = 10 - 4
multiplication = 6 * 7
division = 15 / 3
modulo = 17 % 5

# Opérations de comparaison
egal = (5 == 5)
different = (3 != 4)
superieur = (10 > 5)
                

🧱 3. Structures de Données

Listes


# Création et manipulation de listes
fruits = ["pomme", "banane", "orange"]
fruits.append("kiwi")
premier_fruit = fruits[0]
longueur = len(fruits)

# Parcours d'une liste
for fruit in fruits:
    print(f"J'aime les {fruit}")
                

Dictionnaires


# Création et manipulation de dictionnaires
etudiant = {
    "nom": "Dupont",
    "age": 20,
    "cours": ["Math", "Physique", "Informatique"]
}

# Accès aux valeurs
nom_etudiant = etudiant["nom"]
etudiant["age"] = 21

# Parcours d'un dictionnaire
for cle, valeur in etudiant.items():
    print(f"{cle}: {valeur}")
                

Tuples et Ensembles


# Tuples (immuables)
coordonnees = (10, 20)
x, y = coordonnees

# Ensembles (pas de doublons)
nombres = {1, 2, 3, 4, 5}
nombres.add(6)
                

⚙️ 4. Fonctions

Définition et Appel de Fonctions


def saluer(nom):
    """Fonction pour saluer une personne"""
    return f"Bonjour, {nom} !"

message = saluer("Pythoniste")
print(message)
                

Paramètres et Valeurs de Retour


def calculer(a, b, operation="addition"):
    """Fonction pour effectuer des calculs"""
    if operation == "addition":
        return a + b
    elif operation == "multiplication":
        return a * b
    else:
        return None

resultat1 = calculer(5, 3)
resultat2 = calculer(4, 6, "multiplication")
                

Fonctions Lambda


# Fonctions anonymes
carre = lambda x: x ** 2
print(carre(5))  # Affiche 25

# Utilisation avec map et filter
nombres = [1, 2, 3, 4, 5]
carres = list(map(lambda x: x**2, nombres))
pairs = list(filter(lambda x: x % 2 == 0, nombres))
                

📦 5. Modules et Packages

Importation de Modules


# Modules de la bibliothèque standard
import math
import random
from datetime import datetime

# Utilisation
racine = math.sqrt(16)
aleatoire = random.randint(1, 10)
maintenant = datetime.now()
                

Création de Modules Personnalisés

Créer un fichier utilitaires.py :


# utilitaires.py
def formater_nom(prenom, nom):
    return f"{prenom.capitalize()} {nom.upper()}"

def est_pair(nombre):
    return nombre % 2 == 0
                

Utilisation dans un autre fichier :


# main.py
import utilitaires

nom_formate = utilitaires.formater_nom("jean", "dupont")
print(nom_formate)  # Affiche "Jean DUPONT"

if utilitaires.est_pair(42):
    print("42 est pair")
                

🔍 6. Introduction au RAG (Retrieval Augmented Generation)

Qu'est-ce que le RAG ?

Le RAG (Retrieval Augmented Generation) est une technique d'intelligence artificielle qui combine la recherche d'information avec la génération de texte. Il permet de créer des réponses précises en se basant sur des documents existants.

Application dans le dossier PYTHON/rag

Le dossier PYTHON/rag contient un projet complet pour créer un moteur d'analyse documentaire qui peut :

  • Lire différents formats de documents (PDF, HTML, Markdown)
  • Extraire le contenu de ces documents
  • Vectoriser le contenu pour la recherche sémantique
  • Permettre une recherche intelligente dans les documents

Concepts clés abordés

  • Programmation orientée objet : Utilisation de classes et d'héritage
  • Gestion de fichiers : Lecture et traitement de différents formats
  • Vectorisation : Transformation de texte en vecteurs numériques
  • Recherche sémantique : Trouver des documents similaires par leur sens
  • Accélération matérielle : Utilisation du processeur graphique Apple M3

Progression recommandée

Pour aborder ce projet de manière progressive :

  1. Commencer par les bases de Python dans les modules précédents
  2. Étudier le fichier mod1.md qui explique les concepts avancés
  3. Examiner le code dans rag.py pour comprendre l'implémentation
  4. Exécuter le programme avec des documents de test
  5. Progressivement modifier et améliorer le code

💡 Conseil : Ne pas hésiter à revenir sur les bases si certains concepts sont difficiles à comprendre. La maîtrise de Python prend du temps et de la pratique.