为什么数据库行元组中的整数有一个“L"后缀?

2021-11-20 00:00:00 python mysql

我的问题是为什么 MySQL 行的整数值有一个L"后缀?详情如下:

My question is why do a MySQL row's integer values have an 'L' suffix? Here are the details:

以下字典——为了便于展示,这里人工格式化——

The following dictionary -- artificially formatted here for ease of display --

{'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 数据库表的列组成,其中包含从表中读取一次的结果.

is comprised of a MySQL database table's columns zipped with the result of reading once from the table.

我可以通过将这些值传递给 int() 来删除L",因此如果该字典位于名为 snapped_read 的变量中,我可以这样做:

I can remove the 'L' by passing these values into int(), so if that dictionary were in a variable named snapped_read, I could do this:

int(snapped_read['reading'])3018L 将更改为 3018.

我只是很好奇为什么整数会以这种方式显示.

I'm just curious as to why integers show up this way.

推荐答案

因为在 Python 3 之前的 Python 版本中,长整型文字用 lL 表示后缀.在 Python 3 中,ints 和 longs 已合并为 int,其功能与 long 非常相似习惯了.

Because in versions of Python before Python 3, long integer literals were indicated with an l or L suffix. In Python 3, ints and longs have been merged into just int, which functions pretty much like long used to.

请注意,从技术上讲,Python(2) 的 int 相当于 C 的 long,而 Python 的 long 更像是一个BigNumber-type 具有无限精度的东西(现在 Python 3 的 int 类型就是这种情况.)

Do note that, technically, Python( 2)'s int was equivalent to C's long, while Python's long was more like a BigNumber-type thing with unlimited precision (which is now the case for Python 3's int type.)

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

相关文章