> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Exécution réactive dans les notebooks

Les notebooks exécutent les cellules en fonction des dépendances entre variables, et non selon l'ordre d'apparition des cellules sur la page. Si la cellule B lit une variable définie dans la cellule A, alors la cellule B dépend de la cellule A. La cellule A est en amont de la cellule B, et la cellule B est en aval de la cellule A.

Lorsqu'une cellule en amont s'exécute, le notebook peut réexécuter les cellules en aval afin que leurs sorties reflètent les valeurs les plus récentes. L'exécution automatique ou non des cellules dépend des [paramètres de runtime](/fr/models/notebooks/configure-notebook#configure-startup-behavior) du notebook.

Les notebooks déterminent les dépendances en suivant les définitions et les références :

* Une *définition* est un nom global créé par une cellule, par exemple une variable, une fonction, une classe ou un nom importé.
* Une *référence* est un nom global qu'une cellule lit depuis une autre cellule.

Pour en savoir plus, consultez [How marimo runs cells](https://docs.marimo.io/guides/reactivity/#how-marimo-runs-cells) dans la documentation de marimo.

<div id="stale-and-blocked-cells">
  ## Cellules obsolètes et bloquées
</div>

Les notebooks suivent l'état de chaque cellule afin de déterminer si elle doit être exécutée. Les principaux états d'une cellule sont *obsolète* et *bloquée*.

<div id="stale-cells">
  ### Cellules obsolètes
</div>

Une cellule est *obsolète* si elle n'a jamais été exécutée ou si elle n'a pas été exécutée avec son code ou ses entrées les plus récents. Une fois la cellule exécutée avec son code et ses entrées actuels, elle n'est plus obsolète.

Une cellule devient obsolète dans les situations suivantes :

* Vous modifiez le code de la cellule.
* Une cellule en amont s'exécute alors que le notebook utilise le mode [lazy](/fr/models/notebooks/configure-notebook#lazy-mode). Dans ce mode, le notebook marque les cellules en aval comme obsolètes au lieu de les exécuter automatiquement.
* Un module Python utilisé par la cellule est modifié alors que le rechargement automatique paresseux des modules est activé.

Exécutez une cellule obsolète pour mettre à jour sa sortie. Si des cellules en amont sont obsolètes, le notebook les exécute au préalable. Vous pouvez également exécuter toutes les cellules obsolètes en une seule fois.

<div id="blocked-cells">
  ### Cellules bloquées
</div>

Une cellule est *bloquée* si elle-même ou l'une de ses cellules en amont est désactivée. Les cellules bloquées ne s'exécutent pas automatiquement, même lorsque leurs entrées changent.

Pour débloquer une cellule, réactivez la cellule désactivée dont elle dépend. Le notebook peut alors exécuter les cellules en aval qui sont obsolètes et dont les sorties doivent être mises à jour. Pour la procédure, voir [Désactiver ou activer une cellule](/fr/models/notebooks/run-notebook-cells#disable-or-enable-a-cell).

<div id="delete-cells">
  ## Supprimer des cellules
</div>

Lorsque vous supprimez une cellule, le notebook supprime également les variables globales qu'elle définissait. Selon les [paramètres du runtime](/fr/models/notebooks/configure-notebook#configure-startup-behavior), le notebook réexécute, invalide ou marque comme obsolètes les cellules qui font référence aux variables supprimées.

<div id="define-each-global-name-once">
  ## Définir chaque nom global une seule fois
</div>

Définissez chaque nom global dans une seule cellule. Si deux cellules définissent le même nom global, le notebook ne peut pas déterminer de source unique de vérité pour les cellules en aval. Cette restriction s'applique aux variables, aux fonctions, aux classes et aux noms de packages importés.

Pour les variables temporaires, [faites précéder le nom de la variable d'un seul tiret bas](https://docs.marimo.io/guides/reactivity/#creating-local-variables) afin de la rendre locale à la cellule. Vous pouvez également [définir des variables temporaires à l'intérieur d'une fonction](https://docs.marimo.io/guides/reactivity/#encapsulating-code-in-functions).

<div id="avoid-mutations-across-cells">
  ## Éviter les mutations entre cellules
</div>

Évitez de modifier des objets utilisés par plusieurs cellules. Les notebooks ne suivent pas les mutations d'objets : modifier un objet ne marque donc pas les cellules dépendantes comme obsolètes.

Par exemple, supposons qu'une cellule ajoute une colonne à un DataFrame défini dans une autre cellule. Les cellules qui référencent ce DataFrame ne sont pas réexécutées automatiquement. Pour maintenir la cohérence de l'état du notebook, créez un nouvel objet et affectez-le à une nouvelle variable. Si vous devez modifier un objet, faites-le dans la cellule qui le définit.

Pour en savoir plus, voir [Variable mutations are not tracked](https://docs.marimo.io/guides/reactivity/#variable-mutations-are-not-tracked).

<div id="inspect-variables-and-dependencies">
  ## Inspecter les variables et les dépendances
</div>

<div id="view-variables">
  ### Afficher les variables
</div>

Utilisez l'[explorateur de variables](https://docs.marimo.io/guides/editor_features/dataflow/#variables-explorer) pour afficher les variables définies, leurs types, l'endroit où elles sont déclarées et celui où elles sont référencées.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/8zvY5IVvphHVr7v1/images/notebooks/variable_dependencies.png?fit=max&auto=format&n=8zvY5IVvphHVr7v1&q=85&s=950c14ce0f6849693251cba2890592a8" alt="Variables circulant entre des cellules de notebook dépendantes" width="5960" height="2068" data-path="images/notebooks/variable_dependencies.png" />
</Frame>

Pour en savoir plus sur les symboles et les connexions entre les cellules, voir :

* [Symboles de cellule](https://docs.marimo.io/guides/editor_features/dataflow/#cell-symbols)
* [Lire les connexions entre cellules](https://docs.marimo.io/guides/editor_features/dataflow/#reading-cell-connections)

<div id="view-cell-relationships-in-the-minimap">
  ### Visualiser les relations entre cellules dans la minimap
</div>

Utilisez le [panneau Dependencies](https://docs.marimo.io/guides/editor_features/dataflow/#dependencies-panel) pour examiner les relations entre les cellules :

1. Dans la barre latérale, sélectionnez **Explore dependencies** (<Icon icon="sitemap" iconType="solid" />).
2. Sélectionnez **MINIMAP**.

<div id="view-the-dependency-graph">
  ### Afficher le graphe de dépendances
</div>

Utilisez la [vue graphique](https://docs.marimo.io/guides/editor_features/dataflow/#graph-view) pour visualiser les dépendances entre cellules sous forme de graphe orienté acyclique (DAG) :

1. Dans la barre latérale, sélectionnez **Explore dependencies** (<Icon icon="sitemap" iconType="solid" />).
2. Sélectionnez **GRAPH**.

Déplacez-vous dans le graphe, zoomez et réorganisez les nœuds pour explorer les relations entre les cellules.
