python - example - ¿Por qué los enteros en la fila de la base de datos tuple tienen un sufijo ''L''?
python mysql select (3)
Debido a que no son exactamente enteros, son ''largos''.
http://docs.python.org/library/stdtypes.html#typesnumeric
Por lo general, no ofrecen demasiados problemas, aunque
>>> a=1
>>> b=long(1)
>>> a
1
>>> b
1L
>>> a==b
True
Otra pregunta de stackoverflow sobre esto: here
Mi pregunta es ¿por qué los valores enteros de una fila MySQL tienen un sufijo ''L''? Aquí están los detalles:
El siguiente diccionario - formateado artificialmente aquí para facilitar la visualización -
{''estimated'': '''',
''suffix'': '''',
''typeofread'': ''g'',
''acct_no'': 901001000L,
''counter'': 0,
''time_billed'': datetime.datetime(2012, 5, 1, 9, 5, 33),
''date_read'': datetime.datetime(2012, 3, 13, 23, 19, 45),
''reading'': 3018L,
''meter_num'': ''26174200''}
se compone de columnas de la tabla de una base de datos MySQL comprimidas con el resultado de leer una vez de la tabla.
Puedo eliminar la ''L'' pasando estos valores a int (), así que si ese diccionario estuviera en una variable llamada snapped_read, podría hacer esto:
int(snapped_read[''reading''])
y 3018L
cambiarían a 3018
.
Solo tengo curiosidad sobre por qué los enteros aparecen de esta manera.
Porque en las versiones de Python anteriores a Python 3, los literales enteros largos se indicaban con un sufijo l
o L
En Python 3, int
s y long
s se han fusionado en solo int
, que funciona más o menos como long
mucho long
.
Tenga en cuenta que, técnicamente, el int
Python (2) fue equivalente a C''s long
, mientras que Python''s long
se parecía más a un tipo BigNumber
con precisión ilimitada (que ahora es el caso para el tipo int
Python 3).
http://docs.python.org/library/stdtypes.html#numeric-types-int-float-long-complex
L
es para el tipo de datos long
.
Por ejemplo,
age = 24 # int
bankBalance = 20000005L # long