Maison  >  Article  >  développement back-end  >  Introduction détaillée au passage de variables Python

Introduction détaillée au passage de variables Python

高洛峰
高洛峰original
2017-03-16 09:29:041862parcourir

pythonvariablepass

valeur

  • code

num_1 = 123
num_2 = num_1
# 改变num_2值前
print 'num_1 = {0}, num_2 = {1}'.format(num_1, num_2)
num_2 = 0
# 改变num_2值后
print 'num_1 = {0}, num_2 = {1}'.format(num_1, num_2)
  • Sortie

num_1 = 123, num_2 = 123
num_1 = 123, num_2 = 0
  • Conclusion

Les variables numériques sont transmises par valeur.

Chaîne

  • Code

str_1 = 'hello python'
str_2 = str_1
# 改变str_2值前
print 'str_1 = {0}, str_2 = {1}'.format(str_1, str_2)
str_2 = 'hello'
# 改变str_2值后
print 'str_1 = {0}, str_2 = {1}'.format(str_1, str_2)
  • Sortie

str_1 = hello python, str_2 = hello python
str_1 = hello python, str_2 = hello
  • Conclusion

Les variables de chaîne sont également transmises par valeur.

Liste chaînée

  • Code

l_1 = [1, 2, 3, 4]
l_2 = l_1
print 'l_1 = {0}, l_2 = {1}'.format(l_1, l_2)
l_2[0] = 100  # 改变l_2的第一个元素
print 'l_1 = {0}, l_2 = {1}'.format(l_1, l_2)
l_2 = [1,1,1] # 改变l_2的全部元素
print 'l_1 = {0}, l_2 = {1}'.format(l_1, l_2)
  • Sortie

l_1 = [1, 2, 3, 4], l_2 = [1, 2, 3, 4]
l_1 = [100, 2, 3, 4], l_2 = [100, 2, 3, 4]
l_1 = [100, 2, 3, 4], l_2 = [1, 1, 1]
  • Conclusion

Comme vous pouvez le voir sur la sortie ci-dessus, l_1 et l_2 fonctionnent de manière similaire aux pointeurs en c/c, l_2 = l_1 est équivalent à l_2 et l_1 pointant vers la même mémoire, et le contenu est [1, 2, 3, 4]. Lorsque l_2[0] = 100, le premier élément de l_1 est également modifié. l_2 = [1,1,1] fait pointer l_2 vers un autre morceau de mémoire, ce qui n'affectera pas le contenu de l_1.

Dictionnaire

  • Code

d_1 = {'a': 1, 'b': 2, 'c': 3}
d_2 = d_1
print 'd_1 = {0}, d_2 = {1}'.format(d_1, d_2)

d_2['c'] = 10
print 'd_1 = {0}, d_2 = {1}'.format(d_1, d_2)

d_2 = {'e': 12, 'f': 15}
print 'd_1 = {0}, d_2 = {1}'.format(d_1, d_2)
  • Sortie

d_1 = {'a': 1, 'c': 3, 'b': 2}, d_2 = {'a': 1, 'c': 3, 'b': 2}
d_1 = {'a': 1, 'c': 10, 'b': 2}, d_2 = {'a': 1, 'c': 10, 'b': 2}
d_1 = {'a': 1, 'c': 10, 'b': 2}, d_2 = {'e': 12, 'f': 15}
  • Conclusion

Les résultats de sortie montrent que dict et list ont les mêmes propriétés. L'affectation directe est similaire à la référence dans. c Réussi.

Objet

  • Code

class Point:
    def init(self, x, y):
        self.x = x
        self.y = y
    def str(self):
        return ''.join(['x = ', str(self.x), ' ', 'y = ', str(self.y)])

p_1 = Point(12,34)
p_2 = p_1
print 'p_1: {0};  p_2: {1}'.format(p_1, p_2)

p_2.x = 122
print 'p_1: {0};  p_2: {1}'.format(p_1, p_2)

p_2 = Point(89, 978)
print 'p_1: {0};  p_2: {1}'.format(p_1, p_2)
  • Sortie

p_1: x = 12 y = 34;  p_2: x = 12 y = 34
p_1: x = 122 y = 34;  p_2: x = 122 y = 34
p_1: x = 122 y = 34;  p_2: x = 89 y = 978
  • Conclusion

Les objets personnalisés sont également transmis par référence lors du processus d'affectation.

Résumé

En Python, les valeurs numériques et les chaînes sont transmises par valeur pendant le processus d'affectation ; la liste, le dict et les objets sont transmis par référence par défaut pendant le processus d'affectation. devez passer par valeur, vous pouvez utiliser les fonctions copy et deepcopy sous le module copy.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn