Skip to article frontmatterSkip to article content

hello world

notre tout premier programme: éditez un fichier hello.py qui contient juste

print("hello world")

on l’exécute depuis le terminal avec (ne pas taper le signe $, c’est l’invite...)

$ python hello.py

qui va nous afficher dans le terminal

hello world

que retenir ?

hello guys

on s’enhardit, on dit bonjour à plusieurs personnes; pour cela on modifie notre code pour y mettre

# on peut écrire des commentaires
# après le signe #
# qui ne seront pas exécutés
print("hello Alice")
print("hello Bob")
print("hello Charlie")

on le fait tourner:

que retenir ?

ma première variable

essayons maintenant ceci

name = "Alice"
print(f"hello {name}")
name = "Bob"
print(f"hello {name}")
name = "Charlie"
print(f"hello {name}")

qu’est-ce que ça va faire d’après vous ?

que retenir ?

ma première fonction

comme on a plusieurs fois la même phrase, on va essayer de factoriser le code; et pour ça on va utiliser une fonction

def hello_name(name):
    print(f"hello {name}")

hello_name("Alice")
hello_name("Bob")
hello_name("Charlie")

que retenir ?

ma première boucle

continuons à factoriser, on va maintenant écrire ceci qui fait toujours la même chose

def hello_name(name):
    print(f"hello {name}")

for name in ["Alice", "Bob", "Charlie"]:
    hello_name(name)

que retenir ?

pour vous faire réfléchir

que se passerait-il à votre avis si j’avais écrit ma boucle plutôt comme ceci

for name in ["Alice", "Bob", "Charlie"]:
    hello_name("name")

on coupe en deux fichiers

naïvement

maintenant on décide que la fonction hello_name est tellement intéressante qu’elle pourrait être utile à d’autres projets ou applications; si on la laisse dans ce morceau de programme, on ne pourra pas s’en reservir ailleurs, du coup on coupe notre code en deux

question:

la bonne façon: avec import

eh oui vous avez trouvé, ce code-là ne fonctionne pas, car Python ne “voit” que hello.py et il ne sait pas ce que signifie hello_name

il ne va quand même pas regarder dans tous les fichiers .py de l’ordinateur pour trouver la définition de cette fonction !

du coup il faut l’aider un peu, et pour ça nous avons l’instruction import

modifions hello.py pour y mettre

# rappel, on a mis le code de hello_name
# dans le fichier separate.py
import separate

for name in ["Alice", "Bob", "Charlie"]:
    separate.hello_name(name)

et cette foi ça fonctionne

que retenir ?

import d’une librairie système

j’écris ceci dans hello.py (indice: ce programme fonctionne très bien)

import math

import separate

for name in ["Alice", "Bob", "Charlie", 3*math.pi]:
    separate.hello_name(name)

que pensez-vous que va faire maintenant notre programme ?

que retenir ?

ma première classe

on change complètement de paradigme et maintenant on écrit ceci

# dans separate.py

class Person:

    def __init__(self, name):
        self.name = name
    def hello(self):
        print(self.name)

et

# dans hello.py

from separate import Person

for name in ["Alice", "Bob", "Charlie"]:
    person = Person(name)
    person.hello()

que retenir ?

une classe un peu plus riche

dans l’exemple précédent, on a utilisé une classe pour ranger une donnée (le nom)
du coup l’intérêt n’est peut-être pas très manifeste

mais on peut aussi bien sûr utiliser cela pour “grouper” plusieurs données qui “vont ensemble”

# dans separate.py

class Person:

    # le constructeur, pour initialiser
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def hello(self):
       print(f"Hello {self.name}, tu as {self.age} ans")
# dans hello.py

persons = []

persons.append(Person("Alice", 25))
persons.append(Person("Bob", 22))
persons.append(Person("Charlie", 20))

for person in persons:
    person.hello()

# et ensuite si on voulait par exemple calculer
# la moyenne d'âge de cette micro-classe

total = 0
for person in persons:
    total = total + person.age
print(f"moyenne d'âge: {total / len(persons}")

que retenir ?

conclusion

on a vu des exemples de

ces 3 notions sont centrales pour la réutilisabilité du code Python

on a aussi vu des exemples de