1951 votes

Comment déterminer le type de variable dans Python?

Comment est-ce que je vois le type d'une variable si elle est non signée 32 bits, signée 16 bits, etc.?

Comment puis-je le voir?

1804voto

gregjor Points 3568

Python n’est pas les mêmes types que C/C++, ce qui semble être votre question.

Essayez ceci :

La distinction entre int et long disparaît en Python 3.0, cependant.

505voto

Srikanth Points 4119

Vous pouvez rechercher le `` fonction.

Voir les exemples ci-dessous, mais il n’y a pas de type « unsigned » en Python à l’instar de Java.

Entier positif :

Grand entier positif :

Entier négatif :

Littéral séquence de caractères :

25voto

cdleary Points 18869

La question est quelque peu ambiguë -- je ne suis pas sûr de ce que tu veux dire par "voir". Si vous essayez d' interroger le type d'un natif objet Python, @atzz's réponse permettra de vous orienter dans la bonne direction.

Toutefois, si vous essayez de générer des objets Python qui ont la sémantique des primitives de type C, (comme uint32_t, int16_t), l'utilisation de l' struct module. Vous pouvez déterminer le nombre de bits dans un C-type primitif ainsi:

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

Cela se reflète également dans l' array module, qui peut faire des tableaux de plus en plus ces types de niveau:

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

L'entier maximal soutenu (Python 2 int) est donnée par sys.exemple maxint.

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

Il est également sys.getsizeof, qui retourne la taille réelle de l' Python objet résiduel de la mémoire:

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

Pour flottent des données et la précision des données, l'utilisation 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)

23voto

Roberto Liffredo Points 15265

Voulez-vous dire en Python ou en utilisant ctypes?

Dans le premier cas, vous ne peut tout simplement pas - parce que Python n'a pas signé/non signé, 16/32 bits entiers.

Dans le second cas, vous pouvez utiliser type():

>>> import ctypes
>>> a = ctypes.c_uint() # unsigned int
>>> type(a)
<class 'ctypes.c_ulong'>

Pour plus d'information sur ctypes, un son type, voir la documentation officielle.

17voto

atzz Points 7215

Python ne pas ces types comme vous décrire. Il existe deux types utilisés pour représenter des valeurs intégrales : , qui correspond au type int de la plate-forme c, et , qui est un entier de précision arbitraire (c'est-à-dire qu’il se développe selon les besoins et n’est pas une limite supérieure). s sont converties en silence en si une expression produit résultat qui ne peut pas être stocké dans `` .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X