Functions and libraries

Programming – Session 2

  • Fonctions dans un langage de programmation
  • Organisation du code en bibliothèques
  • Installation de modules Python
  • Visibilité et portée des variables

Functions in a programming language

Definition

Définition et utilisation

Les fonctions assurent la lisibilité et la réutilisabilité de votre code :

  • Factoriser (regrouper) des instructions qui réalisent une tâche spécifique
  • Être appelées à la demande n’importe où dans votre code
  • Être testées indépendamment pour ensuite être réutilisées et partagées en toute sécurité

Instructions algorithmiques impliquant des fonctions

  • Définir des fonctions (une fonction prend des paramètres et retourne une valeur)
  • Appeler des fonctions (associer des valeurs aux paramètres et obtenir la sortie de la fonction)

Functions in a programming language

Defining functions

Définir des fonctions en Python

  • Le nom d’une fonction, le nombre et les types de ses paramètres, ainsi que le type de sa ou ses valeurs retournées sont généralement appelés la signature, ou le prototype d’une fonction.
def func_name (param_1: int, param_2: int) -> float:

    """
        This is an example of how to define a function in Python.
        Here, we use type hinting to indicate to the user how they should use it. 
        In:
            * param_1: The first argument to take as an input.
            * param_2: The second argument to take as an input.
        Out:
            * A result computed by the function.
    """

    # Do something
    ...

    # Return something
    return result

Functions in a programming language

Calling a function

Appeler une fonction en Python

  • Une fois définie, une fonction peut être appelée de n’importe où en utilisant simplement son nom et en passant une valeur pour chaque paramètre attendu
  • Les valeurs données dans un appel de fonction sont appelées paramètres effectifs ou arguments.
def func_name (param_1: int, param_2: int) -> float:

    # Do something
    ...

    # Return something
    return result
# Call the function
res  = func_name(4, 2)

Organizing codes in libraries

Files and modules

Importer des modules

  • Les fonctions peuvent être regroupées thématiquement dans des fichiers séparés (appelés modules), ex. mymodule.py
  • Pour utiliser les fonctions situées dans mymodule.py, il faut importer ce fichier
# Import the functions from the file
# Alternate method: from mymodule import the_function_i_need
import mymodule

# Use the function
# With alternate method: the_function_i_need()
mymodule.the_function_i_need()
  • Lorsqu’un fichier est importé, il est aussi exécuté (pour charger les fonctions en mémoire)
  • Pour éviter que certaines parties soient exécutées lors de l’import, utilisez if __name__ == "__main__":

Organizing codes in libraries

Files and modules (cont)

Pour garder le code organisé, il est bon de le diviser en plusieurs fichiers :

  • main.py – Le script principal
  • functions.py – Contient des fonctions réutilisables

La structure d’un fichier tel que functions.py doit suivre la convention suivante :

"""
    General description of the document contents.
"""

# Needed imports
# ...

# Various functions, well documented.
# ...

# Things to do when running this code directly
if __name__ == "__main__":
    # ...

Installing Python modules

Using Pip to install modules

Ne réinventez pas la roue !

  • Python est livré avec une multitude de fonctions déjà définies regroupées en modules thématiques
  • Favorisez toujours l’utilisation de modules existants (officiels) (Bibliothèque standard Python + modules additionnels)

L’installateur de modules Python

  • Le Python Package Index (PyPI) est un dépôt de logiciels pour le langage de programmation Python
  • PyPI vous aide à trouver et installer des logiciels développés et partagés par la communauté Python, en utilisant l’installateur pip
  • ex. pip install matplotlib

Variables visibility and scope

Variables and functions

Variables locales

  • Définies à l’intérieur d’une fonction
  • Non accessibles en dehors
  • Existent uniquement dans le corps de la fonction
# Example function with two local variables
def example (a):
    b = 2
    print(a, b)

# Call it and try to access variables
example(1)
print(a, b)
1 2
(L.8) NameError: name 'a' is not defined

Variables globales

  • Définies en dehors de toutes les fonctions
  • Accessibles partout en utilisant le mot-clé global
  • Existent pendant toute la durée d’exécution du programme
# Define a global variable
a = 1

# Example function that uses the global variable
def example ():
    global a
    a = 2
    print(a, end=" ")

# See what we got
print(a, end=" ")
example()
print(a)
1 2 2

Recap of the session

Main elements to remember

Les fonctions sont des blocs de code réutilisables, nommés, qui prennent des paramètres en entrée et produisent un résultat


  • Les fonctions aident à rendre le code plus lisible et réutilisable

  • Elles doivent être définies avant d’être utilisées

  • Des collections cohérentes de fonctions doivent être regroupées en modules

  • De nombreux modules existent déjà, et peuvent être installés avec pip

  • Les variables locales existent uniquement dans la fonction

  • Les variables locales doivent être privilégiées par rapport aux variables globales

Recap of the session

What’s next?

Activité pratique (~5h)

Partie 1 (~2h30)

  • Fonctions
  • Visibilité des variables
  • Paramètres de fonction immuables-muables

Partie 2 (~2h30)

  • Petit projet utilisant des fonctions
  • Implémenter un modèle de régression linéaire

Après la session

  • Relire les articles de la session
  • Vérifier votre compréhension avec le quiz
  • Compléter l’activité pratique
  • Consulter la section “Avant le cours” de la prochaine session

Évaluation

  • Préparer un test de programmation de 30 minutes au début de la session 3
  • Couvre les sessions de programmation 1 et 2 (réviser aussi la session d’algorithmique 1)