Подтвердить что ты не робот

Почему целые числа в кортежей строк базы данных имеют суффикс "L"?

Мой вопрос, почему значения целых чисел в строке MySQL имеют суффикс 'L'? Вот подробности:

Следующий словарь - искусственно отформатированный здесь для удобства отображения -

{'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'}

состоит из столбцов таблицы базы данных MySQL, заархивированных с результатом чтения один раз из таблицы.

Я могу удалить "L", передав эти значения в int(), поэтому, если этот словарь был в переменной с именем snapped_read, я мог бы сделать это:

int(snapped_read['reading']) и 3018L изменится на 3018.

Мне просто интересно, почему целые числа отображаются таким образом.

4b9b3361

Ответ 1

Поскольку в версиях Python до Python 3 длинные целые литералы были обозначены суффиксом l или l. В Python 3, int и long были объединены только в int, который очень похож на long.

Обратите внимание, что технически Python (2) int был эквивалентен C long, тогда как Python long был больше похож на вещь BigNumber с неограниченной точностью (что теперь имеет место для Python 3 int.)

http://docs.python.org/library/stdtypes.html#numeric-types-int-float-long-complex

Ответ 2

L предназначен для типа данных long.

Например,

age = 24 # int
bankBalance = 20000005L # long

Ответ 3

Поскольку они не являются целыми, это "longs".

http://docs.python.org/library/stdtypes.html#typesnumeric

Обычно они не предлагают слишком много проблем, хотя

>>> a=1
>>> b=long(1)
>>> a
1
>>> b
1L
>>> a==b
True

Другой вопрос о stackoverflow об этом: здесь