2075 Stimmen

Wie bestimmt man den Typ einer Python-Variablen?

Wie kann ich den Typ einer Variablen erkennen? (z. B. unsigned 32 bit)

58voto

Ahmed Adewale Punkte 2566
a = "cool"
type(a)

//result 'str'
<class 'str'>
or 
do 
`dir(a)` 
to see the list of inbuilt methods you can have on the variable.

43voto

Incerteza Punkte 27611

Eine weitere Möglichkeit mit __class__ :

>>> a = [1, 2, 3, 4]
>>> a.__class__
<type 'list'>
>>> b = {'key1': 'val1'}
>>> b.__class__
<type 'dict'>
>>> c = 12
>>> c.__class__
<type 'int'>

1 Stimmen

Re: Kommentar "Namen, die mit Unterstrichen beginnen..." (einfache) Unterstriche sind etwas ganz anderes als doppelte Unterstriche ("dunders"), und sie sind definitiv Teil der öffentlichen API, und es ist sicherlich in Ordnung, sie zu verwenden. Dies könnte hilfreich sein... youtu.be/wf-BqAjZb8M

41voto

anh_ng8 Punkte 1050

Beispiele für einfache Typüberprüfungen in Python:

assert type(variable_name) == int

assert type(variable_name) == bool

assert type(variable_name) == list

4 Stimmen

Dies sollte die akzeptierte Antwort sein, da sie zeigt, wie man den zurückgegebenen Wert tatsächlich verwendet. Niemand interessiert sich dafür, das Ergebnis von type() im Terminal, wollen wir, dass es eine Typüberprüfung durchführt, und es ist nicht offensichtlich, wie (ich nahm an, dass Sie mit dem Typ als String vergleichen müssen: if (type(var)=='str'): )

33voto

skjoshi Punkte 2335

Es mag ein wenig irrelevant sein, aber Sie können die Typen eines Objekts mit isinstance(object, type) wie erwähnt aquí .

1 Stimmen

Ich denke, dass diese Funktion viel besser ist als die Typfunktion, die bei der Überprüfung verwendet wird. Wenn Sie prüfen und mit dem Ergebnis handeln wollen, müssen Sie try catch mit type verwenden, aber isinstance gibt true oder false zurück

26voto

cdleary Punkte 66512

Die Frage ist etwas zweideutig - ich bin nicht sicher, was Sie mit "Ansicht" meinen. Wenn Sie versuchen Abfrage den Typ eines nativen Python-Objekts, @atzz Die Antwort der Kommission wird Sie in die richtige Richtung lenken.

Wenn Sie jedoch versuchen erzeugen Python-Objekte, die die Semantik von primitiven C-Typen haben (wie z. B. uint32_t , int16_t ), verwenden Sie die struct Modul. Sie können die Anzahl der Bits in einem bestimmten C-Typ-Primitiv folgendermaßen bestimmen:

>>> struct.calcsize('c') # char
1
>>> struct.calcsize('h') # short
2
>>> struct.calcsize('i') # int
4
>>> struct.calcsize('l') # long
4

Dies spiegelt sich auch in den array Modul, das Arrays aus diesen untergeordneten Typen erstellen kann:

>>> array.array('c').itemsize # char
1

Die maximal unterstützte Ganzzahl (Python 2's int ) ist gegeben durch sys.maxint .

>>> import sys, math
>>> math.ceil(math.log(sys.maxint, 2)) + 1 # Signedness
32.0

Außerdem gibt es sys.getsizeof die die tatsächliche Größe der Datei Python Objekt im Restspeicher:

>>> a = 5
>>> sys.getsizeof(a) # Residual memory.
12

Für Float-Daten und Präzisionsdaten verwenden Sie sys.float_info :

>>> sys.float_info
sys.floatinfo(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.2204460492503131e-16, radix=2, rounds=1)

8 Stimmen

Die Frage, so wie ich sie verstehe, bezieht sich auf die Abfrage des Typs einer "Variablen" in Python. Ihre Antwort ist im Allgemeinen korrekt, aber nicht themenbezogen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X