Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

fonction python : return

Posté par
verdurin
18-12-17 à 22:35

Bonsoir à tous.
Dans ce fil tracé de courbe python je me suis inquiété de l'instruction

 return omega,proba


En fait il me semble impossible, sans doute par ignorance, qu'une fonction retourne deux objets.
Et, si c'est le cas, comment y accède t-on ?
Je précise que je ne connais pas bien python.

J'écris, par exemple :
def somprod(a,b):
   s=a+b
   p=a*b
   return s,p


Comment avoir accès à la somme et au produit de deux nombres avec cette fonction ?

Posté par
alb12
re : fonction python : return 18-12-17 à 22:55

salut,


>>> somprod(3,5)[0]
8
>>> somprod(3,5)[1]
15

Posté par
verdurin
re : fonction python : return 18-12-17 à 22:59

Merci.
La fonction retourne donc une liste.
Me voici rassuré.

Posté par
alb12
re : fonction python : return 18-12-17 à 23:10

plutot un tuple

Posté par
bbomaths
re : fonction python : return 18-12-17 à 23:31

Petite correction...

Une fonction Python retourne des valeurs dans un t-uple.

On reprend la fonction :


>>> def somprod(a,b):
...    s=a+b
...    p=a*b
...    return (s,p)
...

On exécute la fonction et on récupère les données dans la variable 'toto' :

>>> toto = somprod(3,5)

On vérifie le type de la variable 'toto' :
>>> type(toto)
<type 'tuple'>

On affiche le contenu de la variable 'toto' :

>>> toto
(8, 15)

C'est bien un t-uple qui est retourné avec encadrement par ( et ). Et on accède à son contenu par :

>>> toto[1]
15
>>> toto[0]
8
>>>

On peut aussi écrire :

>>> som, prod = somprod(3,5)
>>> som
8
>>> prod
15
>>>


Dans ce cas précis, il n'y a aucune liste.

Posté par
verdurin
re : fonction python : return 18-12-17 à 23:55



Mais il n'y a quand même qu'un seul objet retourné par la fonction.

Même si on peut faire des affectations bizarres en python.

Ce qui est intéressant, et je vous remercie pour les indications  que vous m'avez données.

Posté par
bbomaths
re : fonction python : return 19-12-17 à 00:08

Petite précision.

On peut mettre ce qu'on veut dans un t-uple et retourner différents types de données, mélangées ou non, y compris un autre t-uple.

Le Python est très souple. Ce qui peut être un avantage ou un inconvénient. Ça dépend si on aime mélanger les carottes avec les choux ou pas.

Posté par
bbomaths
re : fonction python : return 19-12-17 à 04:37

Bonjour.

Citation :
Même si on peut faire des affectations bizarres en python.


Vous avez dit : "Affectations bizarres en Python" ?... Comme c'est bizarre.

Les affectations en Python peuvent être simple (une affectation par ligne de code) :

>>> a = 1
>>> b = 2
>>> a
1
>>> b
2
>>>


Multiples (plusieurs par ligne) :

>>> c, d = 3, 4
>>> c
3
>>> d
4
>>>


Croisées :

>>> e, f = 5, 6
>>> e
5
>>> f
6
>>> f, e = e, f   
>>> e
6
>>> f
5
>>>

Remarque : en C, il faut utiliser une variable intermédiaire et, en Python aucune.

Ce qui peut donner des choses bizarres pour un programmeur pur et dur en C :

>>> g, h = 10, 20
>>> h, g = g - h, h + g
>>> g
30
>>> h
-10
>>>


Bonne journée.

Posté par
alb12
re : fonction python : return 19-12-17 à 11:15


def somprod(a,b):
   s=a+b
   p=a*b
   return s,p

def prodsom(a,b):
   s=a+b
   p=a*b
   return [s,p]



>>> T=somprod(3,5)
>>> T[0]
8
>>> T[0]=7 # impossible de modifier un element du tuple
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> L=prodsom(3,5)
>>> L[0]=7 # modification du premier element de la liste
>>> L
[7, 15]



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !