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

问题描述 投票:0回答:3

我的问题是为什么 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 数据库表的列组成,这些列与从表中读取一次的结果压缩在一起。

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

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

我只是好奇为什么整数会这样显示。

python python-2.x
3个回答
49
投票

因为在 Python 3 之前的 Python 版本中,长整数文字用

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


13
投票

L
适用于
long
数据类型。

例如,

age = 24 # int
bankBalance = 20000005L # long

9
投票

因为它们不完全是整数,所以它们是“长整型”。

https://docs.python.org/2/library/stdtypes.html#typesnumeric

请注意,这仅适用于 Python 2。在 Python 3 中,

int
long
都统一为 Python 2 所称的
long
,即具有无限精度的整数值。

不过,他们通常不会带来太多麻烦

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

关于此的其他 stackoverflow 问题:Python 如何管理 int 和 long?

© www.soinside.com 2019 - 2024. All rights reserved.