Python-Variablen und Objekt-IDs

Einführung

Dies ist der Artikel am 21. Tag von Inatatsu Adcare.

Lassen Sie uns heute über Python-Objekt-IDs und ~~ Referenzvariablen ~~ sprechen.

Ich bin eine Person, die Python nicht sehr oft verwendet. Wenn Sie also einen Fehler machen, korrigieren Sie ihn bitte. .. .. .. .. ..

Python's Tips

Überprüfen Sie die ID des Objekts

test.py


num1 = 1
num2 = 2
print(id(1)) # 1
print(id(num1)) # 1

print(id(1 + 1)) # 2
print(id(num1 + 1)) # 2
print(id(num2)) # 2

Ich habe versucht, die IDs 1 und 2 auf verschiedene Arten zu erhalten.

$ python test.py
140280906740832
140280906740832
140280906740864
140280906740864
140280906740864

Die Ausgabe sieht so aus. Versuchen Sie es erneut.

$ python test.py

140040431375456
140040431375456
140040431375488
140040431375488
140040431375488

Die IDs 1,1,2,2,2 werden in der Reihenfolge von oben ausgegeben, aber die beim ersten und zweiten Mal ausgegebenen Werte sind unterschiedlich. Und die Objekt-IDs von 1 und num1 sind gleich. Daraus ist ersichtlich, dass die Objekt-ID von Python dynamisch bestimmt wird und dass die Objekt-ID der Variablen, die 1 und 1 enthält, gemeinsam ist.

Dann ist es das nächste Experiment.

test2.py


num1 = 1
num2 = 2
print(id(1))
print(id(num1))

num1 += 1

print(id(num1))
print(id(num2))

Ausführungsergebnis

$ python test2.py
140413757891680
140413757891680
140413757891712
140413757891712

Num1 hat sich zwischen dem 2. und 3. von 1 auf 2 geändert, und auch hier hat sich die Objekt-ID geändert.

Nächstes Experiment

test3.py


num = 1
list = [1]

print(num)
print(id(num))

num = 2
print(num)
print(id(num))

print(list)
print(id(list))

list[0] = 2

print(list)
print(id(list))

Ausführungsergebnis

$ python test3.py
1
140609807909984
2
140609807910016
[1]
140609798595120
[2]
140609798595120

Weiter zur Funktion

test4.py


number_list = [1,2,3,4,5,6,7,8,9,10]

def show (arg):
    print(arg)
    print(id(arg))


def update_list (arg):
    arg[0] = 0

print(id(number_list))
show(number_list)
update_list(number_list)
show(number_list)

Ausführungsergebnis

$ python test4.py
140048610816560
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
140048610816560
[0, 2, 3, 4, 5, 6, 7, 8, 9, 10]
140048610816560

Sie können sehen, dass sich die Objekt-ID nicht geändert hat, auch wenn Sie sie an die Funktion übergeben oder den Inhalt neu schreiben.

Zusammenfassung

Python übergibt ~~ als Referenz ~~ Die Objekt-ID wird übergeben, und unveränderliche Werte wie Zahlen haben eindeutige Objekt-IDs ~~. Wenn Sie also den Wert innerhalb der Funktion neu schreiben, ändert sich die referenzierte Objekt-ID. Obwohl es eine Referenz übergibt, verhält es sich wie das Übergeben eines realen Werts. ~~ Sie können nur einer Variablen zuweisen, und das Zuweisen einer Variablen weist eine andere Objekt-ID zu, die das aufrufende Objekt nicht beeinflusst. Durch Ändern des internen Status eines veränderlichen Objekts, z. B. einer Liste, wird die Objekt-ID der Liste selbst nicht geändert. Änderungen innerhalb der Funktion wirken sich daher auf Variablen und Objekte mit derselben Objekt-ID aus. Wenn Sie einer Variablen eine andere Liste zuweisen, hat diese natürlich eine andere Objekt-ID und wirkt sich nicht auf externe Objekte aus.

Recommended Posts

Python-Variablen und Objekt-IDs
Python: Klassen- und Instanzvariablen
Informationen zu Python-Variablen und -Objekten
[Python] -Variablen
Integriertes Python-Objekt
Integriertes Python-Objekt
Python-Variablen und Datentypen, die mit Chemoinfomatik gelernt wurden
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Unterschied zwischen Variablen und Selbst. Variablen in der [Python] -Klasse
[Python] Kapitel 02-01 Grundlagen von Python-Programmen (Operationen und Variablen)
Probleme mit pseudo-privaten Python-Variablen und Klassenvererbung
[Python] Komprimieren und dekomprimieren
Python-Memorandum-Nummerierungsvariablen
Python- und Numpy-Tipps
Globale und lokale Variablen 2
[Python] Pip und Wheel
Python Iterator und Generator
Python-Pakete und -Module
Vue-Cli- und Python-Integration
Ruby, Python und Map
Python-Eingabe und Ausgabe
Python und Ruby teilen sich
Objektorientiert in Python
Über Python3 ... (Ellipsenobjekt)
Python asyncio und ContextVar
Globale und lokale Variablen 1
Erste Schritte mit Python3 # 2 Erfahren Sie mehr über Typen und Variablen
Unterschied zwischen Ruby und Python in Bezug auf Variablen
[Python] Starten Sie eine Batchdatei aus Python und übergeben Sie Variablen.
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
3-3, Python-Zeichenfolge und Zeichencode
Python 2-Serie und 3-Serie (Anaconda Edition)
Python und Hardware-Verwenden von RS232C mit Python-
Python auf Ruby und wütend Ruby auf Python
Python-Einzug und String-Format
Installieren Sie Python und Flask (Windows 10)
Informationen zu Python-Objekten und -Klassen
[Python] Wert des Funktionsobjekts (?)
Apache mod_auth_tkt und Python AuthTkt
Å (Ongustorome) und NFC @ Python
Nullobjektvergleich in Python
Lernen Sie Python-Pakete und -Module kennen
[Python] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt
Python-Notizen zur Verwendung von Perl-Spezialvariablen
# 2 [python3] Trennung und Kommentar aus
Flache Python-Kopie und tiefe Kopie
Python und Ruby Slice Memo
Behandeln Sie Umgebungsvariablen in Python
Python-Installation und grundlegende Grammatik
Ich habe Java und Python verglichen!
Flache Python-Kopie und tiefe Kopie
Referenzreihenfolge von Klassenvariablen und Instanzvariablen in "self. Klassenvariablen" in Python
Zeigen Sie Zahlen und Zeichen an, die Variablen im Python-Druck zugewiesen sind
# 1 [python3] Einfache Berechnung mit Variablen
Über Python, len () und randint ()