Was soll ich verwenden, um Typvergleiche in Python durchzuführen?

Unterschied zwischen is und ==

== wird beurteilt nach "ob es der gleiche Wert ist", während is beurteilt wird nach" ob es das gleiche Objekt ist ". Zum Beispiel im folgenden Beispiel

>>> a = "hello"
>>> b = "hello"

Beide Objekte haben den gleichen Wert. Im Vergleich zu "==" wird "True" zurückgegeben.

>>> a == b
True

"Ist" wird jedoch beurteilt durch "Ist es das gleiche Objekt?" Wenn Sie in Python ein Objekt erstellen, erhält es eine eindeutige Nummer. is wird durch seine Nummer identifiziert. Sie können die Nummer mit id () überprüfen.

>>> id(a)
2827074142256
>>> id(b)
2827074145520
>>> a is b
False

Sie können Typen auch mit "is instance" vergleichen

isinstance ist eine Funktion, die die Objektklassen vergleicht. Gibt im Vergleich zur übergeordneten Klasse "True" zurück, wenn sie von einer anderen Klasse geerbt wurde

>>> class customint(int):
...     pass
...
>>> c = customint()
>>> type(c) == int
False
>>> type(c) is int
False
>>> isinstance(c, int)
True

Ausführungszeit messen

Dinge die zu tun sind

Führen Sie jede Funktion 10.000.000 Mal (10 Millionen Mal) aus und messen Sie die Ausführungszeit Wiederholen Sie diesen Vorgang 10 Mal, um den Durchschnitt zu berechnen Als Referenz führe ich auch eine Funktion aus, die 10.000.000 Mal wiederholt wird, ohne etwas zu tun

Quellcode

#!/usr/bin/env python3
# coding: utf-8

from time import time

intvar = 0
n = 10 ** 7


def gettime(name, num=10):
    """
10 Mal ausführen, die Ausführungszeit messen und den Durchschnitt berechnen
    """
    def func(fn):
        def wrapper(*args, **kwargs):
            strat_t = time()
            for a in range(num):
                fn(*args, **kwargs)
            dur = (time() - strat_t) / 10
            print(name, "\t:", dur)
        return wrapper
    return func


@gettime("simple\t")
def simple():
    for x in range(n):
        pass


@gettime("equal\t")
def equal():
    for x in range(n):
        res = type(intvar) == int


if type(intvar) == True:
    pass


@gettime("is\t")
def iscompare():
    for x in range(n):
        res = type(intvar) is int


@gettime("isinstance")
def isinstancecompare():
    for x in range(n):
        res = isinstance(intvar, int)


if __name__ == '__main__':
    simple()
    equal()
    iscompare()
    isinstancecompare()

Ergebnis

(Einheit: Sekunden)

Ausführungsumgebung Windows 10
Intel Core i7-8550U @ 1.80GHz
RAM:16GB
Sakuras VPS(v3) 1G
Leere Schleife 0.1508335590362549 0.37562224864959715
== 0.8364578723907471 1.9130330801010131
is 0.8253042459487915 1.799116063117981
isinstance 0.5259079456329345 1.3679522275924683

Erwägung

Ausführungszeit ist == > is >>> isinstance Es wurde ein Gefühl. Damit

Im Fall von "ist Instanz",

Verwenden Sie in diesem Fall is.

Impressionen

Ich habe den Dekorateur zum ersten Mal benutzt, aber es ist wirklich praktisch

Recommended Posts

Was soll ich verwenden, um Typvergleiche in Python durchzuführen?
Was soll ich denn mit der Python-Verzeichnisstruktur machen?
Welchen Befehl sollte ich eingeben, um aktuell verfügbare Module wie Gem List in Python aufzulisten?
Was tun, wenn der Werttyp in Python nicht eindeutig ist?
Ich möchte Dunnetts Test in Python machen
[Python] Was ich getan habe, um Unit Test zu machen
Was tun, wenn Sie die Rastersuche von sklearn in Python nicht verwenden können?
Was soll ich mit DICOM von MPEG2 machen?
[Frage] Was passiert, wenn Sie% in Python verwenden?
Was tun, um eine Google-Tabelle in Python zu erhalten?
Was beim Nachahmen zu tun ist, wird in Python eingebettet
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Ich möchte R-Datensatz mit Python verwenden
Ich möchte am Ende etwas mit Python machen
Was ich in Python gelernt habe
Was tun, wenn `Argumente [0] .scrollIntoView ();` in Python-Selen fehlschlägt?
Ich möchte so etwas wie Uniq in Python sortieren
Was tun, wenn in Python "SSL: CERTIFICATE_VERIFY_FAILED _ssl.c: 1056" angezeigt wird?
[Python] Wie man PCA mit Python macht
Was tun mit PYTHON Release?
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Was tun, wenn in Python minus Null angezeigt wird?
MacBookPro-Setup Schließlich möchte ich eine Neuinstallation durchführen
Was ich mit json.dumps in Pythons base64-Codierung süchtig gemacht habe
Verwendung von Sternchen (*) in Python. Vielleicht ist das alles? ..
[Python] Wenn Sie alle Variablen in einer anderen Datei verwenden möchten
Ich wollte so etwas wie Elixirs Pipe in Python machen
Was tun, wenn Sie den Papierkorb in Lubuntu 18.04 nicht verwenden können?
Welche Automatisierung sollte in der Programmiersprache RPA, VBA durchgeführt werden?
Was tun, wenn ModuleNotFoundError: In Python tritt kein Modul mit dem Namen 'XXX' auf
Ich habe versucht, PLSA in Python zu implementieren
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Ich habe versucht, Permutation in Python zu implementieren
So machen Sie R chartr () in Python
Ich habe versucht, PLSA in Python 2 zu implementieren
Ich möchte ein Glas aus Python verwenden
Datenanalyse, was machen Sie denn?
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
Ich habe versucht, ADALINE in Python zu implementieren
Ich wollte ABC159 mit Python lösen
Ich habe versucht, PPO in Python zu implementieren
Verwendung von __slots__ in der Python-Klasse
Verwendung regulärer Ausdrücke in Python
Was tun nach der Installation von Linux (Ubuntu)
Verwendung ist und == in Python
Was ich getan habe, um Python-Speicher zu speichern
FBX SDK Welche Fähigkeiten benötige ich, um ein Programm mit Python zu erstellen?
[Python] Ich habe versucht, den kollektiven Typ (Satz) auf leicht verständliche Weise zusammenzufassen.
Was tun, wenn in python json .dumps eine Dezimalstelle enthalten ist?
Was tun, wenn in pydoc keine Python-Dokumentation für ... gefunden wird?
Ein Memorandum, weil ich beim Versuch, MeCab mit Python zu verwenden, gestolpert bin
Ich möchte Affenpatches nur teilweise sicher mit Python machen
Was tun, wenn PyInstaller3.5 einen Fehler in Python3.8 verursacht (TypeError: Eine Ganzzahl ist erforderlich (Typbytes erhalten))
Verwendung der C-Bibliothek in Python
Ich möchte den Transferstatus der 2020 J League visualisieren. Was soll ich tun?
[Python] Verwendung von zwei Arten von type ()
Ich möchte MATLAB feval mit Python verwenden