Passages d'arguments par référence

Passages d'arguments par référence - Python - Programmation

Marsh Posté le 09-08-2004 à 09:30:05    

Je suis sur de l'avoir vu, mais impossible de le retrouver que ce soit dans la doc python ou dans dive :cry:  
le problème est simple:  
p1 -> je voudrais passer un argument à une fonction par référence et non par recopie, impossible de retrouver comment le faire (le passage par copie étant le fonctionnement par défaut)
p2 -> je voudrais créer une 2e variable référençant une variable existante (avec comme résultat 2 variables pointant vers la même donnée)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-08-2004 à 09:30:05   

Reply

Marsh Posté le 09-08-2004 à 09:43:35    

1) tout est référence en python. le fonctionnement par défaut n'est pas la copie
2) operéteur =

Reply

Marsh Posté le 09-08-2004 à 10:49:33    

Taz a écrit :

1) tout est référence en python. le fonctionnement par défaut n'est pas la copie


Code :
  1. >>> def f(x):
  2. ...     x+=1
  3. ...
  4. >>> a = 1
  5. >>> f(a)
  6. >>> a
  7. 1


je veux a == 2 en sortie moi  :cry:  

Citation :

2) operéteur =


Code :
  1. >>> a
  2. 1
  3. >>> b = a
  4. >>> b
  5. 1
  6. >>> a = 2
  7. >>> a
  8. 2
  9. >>> b
  10. 1


et la je veux b == 2 :whistle:  
(c'est pas ca les références? me suis encore planté de terme technique?)


Message édité par masklinn le 09-08-2004 à 10:49:53

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-08-2004 à 11:04:48    

1) tu peux pas
2) c'est des références surtout, sauf que les types de bases sont immutables (string et nombres)

Reply

Marsh Posté le 09-08-2004 à 11:17:39    

1) t'es sûr?
2) c'est des références, mais sur 2 objets indépendants, moi je veux que 2 identifiants pointent sur le même objet


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-08-2004 à 11:18:51    

Masklinn a écrit :

1) t'es sûr?
2) c'est des références, mais sur 2 objets indépendants, moi je veux que 2 identifiants pointent sur le même objet


2. non. taz a raison, tu as tord  [:sinclaire]

Reply

Marsh Posté le 09-08-2004 à 11:22:48    

mais j'ai pas dit que c'étaient pas des références :(


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-08-2004 à 11:22:57    

Masklinn a écrit :

moi je veux que 2 identifiants pointent sur le même objet


fais du C :o


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-08-2004 à 11:24:04    


ben oui mais je fais du python :pfff:  
je pensais qu'on pouvait effectuer le même genre d'opérations stou, apparement me suis planté :sweat:


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-08-2004 à 11:30:51    

Masklinn a écrit :

mais j'ai pas dit que c'étaient pas des références :(


ce ne sont pas deux objets indépendants :o

Reply

Marsh Posté le 09-08-2004 à 11:30:51   

Reply

Marsh Posté le 09-08-2004 à 11:32:08    

Masklinn a écrit :

ben oui mais je fais du python :pfff:  
je pensais qu'on pouvait effectuer le même genre d'opérations stou, apparement me suis planté :sweat:


bien sur que si !
essaye avec une liste par exemple :
 

Code :
  1. def plop(coin):
  2.   coin.append("gruiiik" )
  3. titi = []
  4. plop(titi)
  5. print titi


 
c'est juste que les entiers sont immutables ! (cad non modifiables)

Reply

Marsh Posté le 09-08-2004 à 11:32:35    

mmm oké
 
ca m'arrange pas mais bon :pfff:  
 
merci ca me permet de voir un peu plus clair dans le machin :)


Message édité par masklinn le 09-08-2004 à 11:34:48

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-08-2004 à 11:43:11    

spa notre faute si y a 5minutes tu avait une fausse idée sur le passage de paramètre et tout le design de python

Reply

Marsh Posté le 09-08-2004 à 11:44:17    

je sais, c'est pour ca que je vous remercie de m'avoir éclairé dessus espèce de gronchon :kaola:


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-08-2004 à 12:38:37    

Si les entiers et les strings sont immutables en Python, ll suffit simplement de les encapsuler dans une liste ou plus proprement dans un objet pour les manipuler. Tu n'as pas le droit de modifier l'entier mais tu as le droit de modifier le premier element de la liste passée en paramètre :)


Message édité par Kristoph le 09-08-2004 à 12:39:17
Reply

Marsh Posté le 02-09-2004 à 22:51:40    

Question : A quoi ça sert d'avoir deux références différentes pour une même valeur ?
 
ps : désolé si je me suis planté dans les termes techniques

Reply

Marsh Posté le 06-09-2004 à 13:05:21    

Le but la c'était d'avoir 2 références sur le même objet (donc la modification au niveau d'une référence modifiait l'objet et donc les valeurs pointées par la 2e référence)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed