Écrire tes propres fonctions
Une fonction qui se termine sans return renvoie None, c'est pourquoi print(print("hi")) affiche hi puis None.
Deux fonctions qui se ressemblent à l'écran
La plupart des débutants croient qu'afficher une valeur et la rendre sont la même chose. Voici deux fonctions qui semblent toutes deux « donner » l'aire d'un rectangle. def commence une définition de fonction : un nom, les entrées entre parenthèses, des deux-points et un corps indenté. Exécute le programme et les deux lignes de sortie se ressemblent.
def show_area(w, h):
print(w * h)
def area(w, h):
return w * h
show_area(4, 3)
print(area(4, 3))12
12Essaie maintenant d'utiliser les résultats dans un calcul. La différence apparaît aussitôt.
def show_area(w, h):
print(w * h)
def area(w, h):
return w * h
a = show_area(4, 3)
b = area(4, 3)
print(a, b)
print(b * 2)12
None 12
24show_area affiche 12 à l'écran puis se termine. Elle ne rend rien, et une fonction qui ne rend rien renvoie la valeur spéciale None. Donc a vaut None. area n'affiche rien ; elle renvoie 12 à la ligne qui l'a appelée, et ce 12 peut être stocké, affiché ou doublé. Afficher est fait pour les humains qui regardent l'écran. Renvoyer est fait pour le reste du programme. Si tu veux utiliser un résultat plus tard, renvoie-le.
Les paramètres sont les noms, les arguments sont les valeurs
Dans def area(w, h):, w et h sont des paramètres : des noms qui n'existent qu'à l'intérieur de la fonction. Dans area(4, 3), 4 et 3 sont des arguments : les valeurs qui remplissent ces noms pour cet appel. Ils sont associés par position, le premier argument va donc au premier paramètre. Appelle la fonction avec un mauvais nombre d'arguments et Python s'arrête avec un TypeError qui nomme le paramètre manquant.
Un paramètre peut avoir une valeur par défaut, écrite avec = dans la définition. Les appelants peuvent omettre cet argument, et la valeur par défaut est utilisée. Le tutoriel Python présente les valeurs par défaut dans sa section sur la définition de fonctions, et on les trouve partout dans les fonctions intégrées. print en a une lui-même : son paramètre end vaut par défaut un retour à la ligne.
def greet(name, greeting="Hello"):
return f"{greeting}, {name}!"
print(greet("Mina"))
print(greet("Jun", "Hi"))
print("no new line", end=" ")
print("here")Hello, Mina!
Hi, Jun!
no new line herereturn termine la fonction aussitôt
Une fonction s'arrête au premier return qu'elle atteint, même s'il y a d'autres lignes en dessous. Les retours anticipés sont donc une façon propre de traiter les cas particuliers. La fonction ci-dessous reprend la règle des billets de l'unité sur if, maintenant empaquetée pour que n'importe quelle partie d'un programme puisse demander un prix.
def ticket_price(age):
if age < 7:
return 0
if age <= 18:
return 3000
return 5000
family = [40, 15, 5]
total = 0
for age in family:
total += ticket_price(age)
print(total)8000Les variables créées à l'intérieur d'une fonction sont locales : elles existent pendant l'exécution de la fonction et disparaissent quand elle se termine. Une variable nommée total dans une fonction n'a rien à voir avec un total à l'extérieur. C'est ce qui te permet de réutiliser une fonction sans te soucier des noms que le reste du programme utilise.
| def | Commence une définition de fonction |
| paramètre | Un nom dans la définition : w dans def area(w, h) |
| argument | Une valeur passée dans un appel : 4 dans area(4, 3) |
| return | Rend une valeur et termine la fonction |
| None | Ce qu'une fonction renvoie quand elle n'a pas de return |
| variable locale | Une variable qui n'existe qu'à l'intérieur d'une fonction |
- Qu'affiche ce code ?
def double(x): return x * 2 print(double(7)) - Qu'affiche ce code ?
def hello(): print("hi") result = hello() print(result)hi
hihi
NoneNonehi
- Qu'affiche ce code ?
def add(a, b): return a + b print(add(2, 3) * add(1, 1)) - Qu'affiche ce code ?
def f(x): return x + 1 print("never") print(f(1)) - Qu'affiche ce code ?
def greet(name, greeting="Hello"): return greeting + " " + name print(greet("Bo")) - Qu'affiche ce code ?
def sign(n): if n > 0: return "plus" if n < 0: return "minus" return "zero" print(sign(-4), sign(0)) - Qu'affiche ce code ?
print("a", end="-") print("b") - Qu'affiche ce code ?
def total_of(nums): t = 0 for n in nums: t += n return t print(total_of([4, 5, 6])) - Dans def area(w, h):, comment s'appellent w et h ?
- Des arguments
- Des paramètres
- Des valeurs de retour
- Des mots-clés
- Mets les lignes dans l'ordre pour que le programme affiche 25.Sortie
25
- « Une fonction qui affiche la réponse l'a renvoyée. » Afficher ne fait que montrer la valeur. La fonction renvoie toujours None, donc x = show_area(4, 3) laisse x à None et x * 2 s'arrête avec TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'.
- « Je peux appeler une fonction au-dessus de la ligne où je la définis. » Python s'exécute depuis le haut, donc à ce moment le nom n'existe pas encore : NameError: name 'area' is not defined. Mets le def au-dessus du premier appel.
- « Omettre un argument le met simplement à zéro. » Sans valeur par défaut, Python s'arrête : area(4) donne TypeError: area() missing 1 required positional argument: 'h'.
- def nom(paramètres) : commence une fonction ; le corps est indenté.
- return rend une valeur et termine la fonction.
- print montre une valeur ; il ne la renvoie pas. Pas de return signifie None.
- Les arguments remplissent les paramètres par position ; les valeurs par défaut remplissent les manquants.
- Les variables créées dans une fonction lui sont locales.
Sources de ce cours (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Consulté le: 2026-10-19