136 votes

Passage d'un entier par référence en Python

Comment puis-je passer un entier par référence en Python ?

Je veux modifier la valeur d'une variable que je passe à la fonction. J'ai lu que tout en Python est transmis par valeur, mais il doit y avoir un truc facile. Par exemple, en Java, vous pouvez passer les types de référence de Integer , Long etc.

  1. Comment puis-je passer un entier dans une fonction par référence ?
  2. Quelles sont les meilleures pratiques ?

1voto

JillAndMe Points 134
class Obj:
  def __init__(self,a):
    self.value = a
  def sum(self, a):
    self.value += a

a = Obj(1)
b = a
a.sum(1)
print(a.value, b.value)// 2 2

0voto

recursive Points 34729

En Python, tout est transmis par valeur, mais si vous voulez modifier un état, vous pouvez changer la valeur d'un entier dans une liste ou un objet transmis à une méthode.

0voto

Dev Parzival Points 391

Les entiers sont immuable en python et une fois qu'elles sont créées, nous ne pouvons pas changer leur valeur en utilisant l'opérateur d'affectation à une variable, nous la faisons pointer vers une autre adresse et non vers l'adresse précédente.

En python, une fonction peut retourner des valeurs multiples nous pouvons l'utiliser :

def swap(a,b):
    return b,a

a,b=22,55
a,b=swap(a,b)
print(a,b)

Pour changer la référence vers laquelle pointe une variable, nous pouvons envelopper les types de données immuables ( int, long, float, complex, str, bytes, truple, frozenset ) à l'intérieur de types de données mutables ( bytearray, liste, set, dict ).

#var is an instance of dictionary type

def change(var,key,new_value):
    var[key]=new_value

var =dict()
var['a']=33
change(var,'a',2625)
print(var['a'])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X