Introduction détaillée au passage de variables Python

高洛峰
Libérer: 2017-03-16 09:29:04
original
1883 Les gens l'ont consulté

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)
Copier après la connexion
  • Sortie

num_1 = 123, num_2 = 123
num_1 = 123, num_2 = 0
Copier après la connexion
  • 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)
Copier après la connexion
  • Sortie

str_1 = hello python, str_2 = hello python
str_1 = hello python, str_2 = hello
Copier après la connexion
  • 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)
Copier après la connexion
  • 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]
Copier après la connexion
  • 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)
Copier après la connexion
  • 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}
Copier après la connexion
  • 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)
Copier après la connexion
  • 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
Copier après la connexion
  • 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal