Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Re: Qs de débutant sur les fonctions.

2 réponses
Avatar
Laurent FRANCOIS
Bonjour,

append() renvoit None d'accord.

En fait je crois que je ne comprends pas la différence
entre ce que fait une fonction et ce qu'elle renvoit.
Ou plus exactement comment est-ce que que je peux voir le résultat
de l'action de la fonction ("fait quelque chose") et voir ce qu'elle
retourne ("renvoit quelque chose").

_________
def unefonction():
fait quelque chose
return "renvoit quelque chose" # et None si pas de return

OK je comprends disons la syntaxe
________

x=unefonction() pointe vers "renvoit quelque chose" . C'est ça?

Et comment je fais pour acceder à ce que fait la fonction?

Merci pour vos lumieres.

2 réponses

Avatar
Bruno Desthuilliers
Laurent FRANCOIS a écrit :
Bonjour,

append() renvoit None d'accord.

En fait je crois que je ne comprends pas la différence
entre ce que fait une fonction et ce qu'elle renvoit.
Ou plus exactement comment est-ce que que je peux voir le résultat
de l'action de la fonction ("fait quelque chose") et voir ce qu'elle
retourne ("renvoit quelque chose").

_________
def unefonction():
fait quelque chose
return "renvoit quelque chose" # et None si pas de return

OK je comprends disons la syntaxe
________

x=unefonction() pointe vers "renvoit quelque chose" . C'est ça?

Et comment je fais pour acceder à ce que fait la fonction?



Prise littéralement, cette question n'a pas de sens.

<simplification hative>
Python est essentiellement un langage impératif - en d'autres termes, un
programme Python fonctionne avant tout par modifications successives de
l'"état" du programme. Par example, list.append modifie l'état de la liste.

Comme beaucoups de langages impératifs, Python emploie le même terme (et
la même construction syntaxique) pour deux concepts en fait distincts,
celui de fonction (au sens mathématique) et celui de procédure.

En théorie, une fonction "pure" 1/ renvoie toujours un résultats, 2/
lequel ne dépends que de ses entrées. Un example de fonction 'pure':

def add(num1, num2):
return num1 + num2

Une procédure, par contre (et toujours d'un point de vue théorique),
modifie l'état du programme et ne renvoie rien. Elle n'est utilisée
*que* pour la modification d'état. Ce qui lui tient lieu de "résultat"
est donc la modification de l'état, laquelle dépend de l'état *avant*
exécution de la procédure.

De ce point de vue, "accéder à ce que fait la" procédure n'a pas
vraiment de sens, puisque la procédure est une suite d'instruction, pas
une valeur.

Une "fonction" Python peut se comporter comme une fonction pure, comme
une procédure, ou comme un mix des deux. Dans la mesure du possible, il
est préférable d'éviter ce "mix", et de bien distinguer les fonctions
"fonctions" - qui sont utilisées pour leur valeur et ne devraient pas
avoir d'effet de bord (modification d'état) - des fonctions "procédures"
qui sont utilisées pour leurs effets de bord et ne retourne pas de
valeur (du moins pas de valeur autre que None).

Accessoirement, l'approche objet est (entre autres...) une tentative
pour réduire la portée des procédures (alors appelées méthodes) à l'état
d'un objet donné, au lieu de jouer sur un état global. list.append, par
exemple, ne modifie que l'état de la liste sur laquelle la méthode est
appelée. En l'occurrence, si tu veux "accéder à ce que fait" cette
méthode, tu peux faire une copie de la liste avant l'appel, et comparer
les deux listes après...
</simplification hative>


HTH
Avatar
Méta-MCI \(MVP\)
Bonsoir !


Et comment je fais pour accéder à ce que fait la fonction ?



Regarde le module pdb


@-salutations
--
Michel Claveau