# Réutiliser le code d'autres personnes dans vos projets

Augmentez votre efficacité de codage et vos connaissances en intégrant du code existant dans vos projets.

L'une des meilleures choses sur open source logiciel est la possibilité de réutiliser le code d'autres personnes. La réutilisation du code vous permet de gagner du temps, de découvrir de nouvelles fonctionnalités et d’apprendre d’autres styles de programmation. Il existe deux façons principales de réutiliser le code :

* **copier et coller un extrait de code directement dans votre projet.** Si vous débutez avec le codage, il s’agit du moyen le plus rapide de commencer à réutiliser du code.
* **Importer une bibliothèque dans votre projet.** Bien que cette approche prenne un certain temps pour apprendre, elle est finalement plus facile et plus efficace. Il s’agit également d’une compétence fondamentale pour le développement de logiciels.

Dans cet article, nous allons apprendre à la fois en suivant un exemple : réutiliser le code Python qui calcule la factorielle d'un nombre.

## Utiliser des extraits de code d'autres personnes dans votre projet

Lorsque vous apprenez à coder, vous pouvez commencer par réutiliser le code en copiant et en collant des extraits de code d’autres développeurs dans votre projet. Il s’agit d’un excellent moyen de gagner du temps, mais vous devez toujours suivre quelques étapes clés avant de copier le code d’un autre développeur.

### 1. Recherche et compréhension d’un extrait de code

Tout d’abord, vous devez trouver et comprendre l’extrait de code que vous souhaitez réutiliser. Pour cet exemple, nous allons choisir le référentiel [`new2code/python-factorial`](https://github.com/new2code/python-factorial).

Tout d'abord, **ouvrez**[`factorial_finder.py`](https://github.com/new2code/python-factorial/blob/main/factorial_finder.py), qui implémente la calculatrice en utilisant une boucle :

```python
# Initialize the factorial result to 1
factorial = 1

# Initialize the input number to 6
number = 6

# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
    factorial *= i

print(f"The factorial of {number} is {factorial}")
```

Ensuite, dans la barre de menus en haut du fichier, cliquez <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-copilot" aria-label="Ask Copilot about this file" role="img"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg> pour démarrer une conversation avec Copilot.

![Capture d'écran du bouton Copilot, souligné en orange foncé, en haut de la vue du fichier.](/assets/images/help/copilot/factorial-finder-copilot-button.png)

Dans la fenêtre de conversation, demandez Copilot:

```text copy
Explain this program.
```

### 2. Présentation des licences de projet

Avant de pouvoir réutiliser le code que vous avez trouvé, vous devez comprendre ses licences. Les licences déterminent comment vous pouvez utiliser le code dans un projet, y compris votre capacité à copier, modifier et distribuer ce code.

Pour identifier la licence de [new2code/python-factorial](https://github.com/new2code/python-factorial), localisez la section « À propos » sur la page principale du référentiel. Vous y verrez que le référentiel est sous licence MIT. Pour lire la licence, cliquez sur <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-law" aria-label="law" role="img"><path d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z"></path></svg>**Licence MIT**.

![Capture d’écran de la page principale du référentiel new2code/python-factorial. Dans la barre latérale de droite, la « licence MIT » est soulignée en orange foncé.](/assets/images/help/repository/license-info-python-factorial.png)

Nous voulons copier l’intégralité du fichier `factorial_finder.py` , de sorte que la licence MIT indique que nous devons inclure une copie de la licence dans notre propre projet. En haut de votre fichier Python, collez la licence en tant que commentaire.

> \[!TIP] Vous pouvez découvrir ce qui est autorisé par d’autres licences courantes grâce à l’outil [Choisir une licence](https://choosealicense.com/licenses/).

### 3. Utilisation et modification d’extraits de code

Vous êtes maintenant prêt à coller l’extrait de code dans votre projet. Bien que vous puissiez parfois utiliser des extraits de code tels quels, vous aurez souvent besoin de les **modifier** pour votre cas d’utilisation spécifique. Passons maintenant à la pratique !

Supposons que nous voulions calculer rapidement les factorielles de 5, 7, 9 et 10. Au lieu de copier et coller l’ensemble du programme pour chaque nombre, nous pouvons déplacer notre calculatrice dans une **fonction** qui prend un nombre comme argument.

Permet [Discussion avec Copilot](https://github.com/copilot) de suggérer et d’expliquer une implémentation. Collez notre code actuel dans la fenêtre de conversation, suivi de ce prompt :

```text copy
Wrap the Python code above in a function.
```

Copilot génère du code qui ressemble à ceci :

```python copy
def calculate_factorial(number):
    # Initialize the factorial result to 1
    factorial = 1

    # Loop from 1 to number (inclusive) and multiply factorial by each number
    for i in range(1, number + 1):
        factorial *= i

    return factorial
```

Avec notre nouvelle fonction, nous pouvons facilement trouver les factorielles de nos nombres en ajoutant le code suivant à notre projet, puis en exécutant le programme Python :

```python copy
print(calculate_factorial(5))
print(calculate_factorial(7))
print(calculate_factorial(9))
print(calculate_factorial(10))
```

Félicitations ! Vous avez trouvé, compris et modifié un exemple d’extrait de code.

## Utiliser le code des bibliothèques dans votre projet

Apprenons maintenant à utiliser les bibliothèques, ce qui est une **pratique courante** pour les développeurs. Les bibliothèques sont essentiellement des collections de code écrites par d’autres développeurs pour effectuer des tâches spécifiques. Vous pouvez importer des bibliothèques dans votre projet pour utiliser le code préécrit, ce qui vous permet de gagner du temps et des efforts.

Dans cette section, nous allons continuer à utiliser l'exemple de calculatrice factorielle Python de la section précédente. Pour référence, voici notre code actuel :

```python copy
def calculate_factorial(number):
    # Initialize the factorial result to 1
    factorial = 1

    # Loop from 1 to number (inclusive) and multiply factorial by each number
    for i in range(1, number + 1):
        factorial *= i

    return factorial

print(calculate_factorial(5))
print(calculate_factorial(7))
print(calculate_factorial(9))
print(calculate_factorial(10))
```

### 1. Recherche d’une bibliothèque

Une fois que vous connaissez les fonctionnalités que vous souhaitez ajouter à votre projet, vous pouvez rechercher une bibliothèque avec du code approprié.
Discussion avec Copilot est un moyen simple de rechercher des bibliothèques, car vous pouvez utiliser le langage naturel pour décrire exactement ce que vous recherchez.

Trouver une factorielle est une fonction assez courante, et il y a de fortes chances que quelqu’un ait inclus cette fonction dans une bibliothèque existante. Ouvrez [Discussion avec Copilot](https://github.com/copilot), puis demandez :

```text copy
Is there a Python library with a function for calculating a factorial?
```

Copilot indique qu’une fonction factorielle est incluse dans le [`math`](https://docs.python.org/3/library/math.html) module à partir de la bibliothèque Python standard.

### 2. Hiérarchisation de la sécurité dans votre projet

Lorsque vous ajoutez une bibliothèque ou un module à votre projet, vous créez ce que l’on appelle une **dépendance**. Les dépendances sont des ensembles de codes pré-écrits dont votre projet dépend pour fonctionner correctement. Si elles ne sont pas soigneusement écrites ou gérées, elles peuvent introduire des failles de sécurité dans votre travail.

Heureusement, vous pouvez prendre certaines mesures pour mieux protéger votre projet. Apprenons à les utiliser.

#### Utilisation de bibliothèques populaires

Les bibliothèques populaires sont plus susceptibles d’être sécurisées, car elles sont activement gérées et utilisées par de nombreux développeurs. Un bon marqueur de popularité est le nombre d’**étoiles** qu’un référentiel possède. Si vous ne trouvez pas le GitHub référentiel pour une dépendance, vous pouvez demander de l’aide à Copilot.

Ouvrez [Discussion avec Copilot](https://github.com/copilot), puis demandez :

```text copy
Find the GitHub repository containing the code for the math module in Python.
```

Copilot vous indiquera que le `math` module est défini dans [`python/cpython`](https://github.com/python/cpython), qui a plus de 64 000 étoiles.

#### Activer Dependabot alerts pour votre projet

Lorsqu’elle est activée, Dependabot alerts sont générées automatiquement lors Dependabot de la détection d’un problème de sécurité dans vos dépendances, ce qui vous aide à corriger rapidement les vulnérabilités.
Dependabot est disponible **gratuitement** sur tous les référentiels open source GitHub .

Activez Dependabot alerts pour votre dépôt maintenant. Cliquez sur l’onglet **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security and quality** du dépôt GitHub de votre projet. En regard de Dependabot alerts, cliquez sur **Activer Dependabot alerts**. Vous pouvez accéder à Dependabot alerts partir de l’onglet **Dependabot** de la barre latérale.

### 3. Mise en œuvre d'un code provenant d'une bibliothèque

Vous êtes maintenant prêt à importer la bibliothèque dans votre projet, puis à utiliser son contenu dans votre code. Vous pouvez lire la documentation de la bibliothèque pour apprendre à le faire vous-même, ou vous pouvez demander Copilot de suggérer et d’expliquer une implémentation pour vous.

Ouvrez [Discussion avec Copilot](https://github.com/copilot), puis demandez :

```text copy
How do I use the factorial function of the math module in my Python project?
```

Copilot suggérera ensuite une version du code suivant :

```python copy
import math

# Calculate the factorial of a number
number = 5
result = math.factorial(number)

print(f"The factorial of {number} is {result}")
```

Après avoir remplacé le code existant dans votre projet par l’implémentation ci-dessus, vous avez utilisé avec succès le code d’une bibliothèque dans votre projet d’exemple !

## Partage de votre travail

Grâce à ce tutoriel, vous avez appris à réutiliser en toute sécurité le code d’autres utilisateurs dans votre propre travail. À cette occasion, partagez la manière dont vous avez réutilisé le code et généré le projet d’exemple dans notre [discussion communautaire](https://github.com/orgs/community/discussions/153140).

## Pour aller plus loin

* [Recherche et compréhension d’un exemple de code](/fr/get-started/learning-to-code/finding-and-understanding-example-code)