博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python L suffix - indicated long integer literals before Python3
阅读量:4031 次
发布时间:2019-05-24

本文共 2793 字,大约阅读时间需要 9 分钟。

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

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

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']) and 3018L would change to 3018.

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

 

3 Answers

20
accepted

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.

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.)

 
3  
Side note: MySQLdb convert ALL integer types to long type on Python 2.x –   
Aug 1 '12 at 18:09
1  
Interesting to know. It looks like only BIGINT would require that, though, so I'm guessing it's for consistency in terms of the Python interface.  –   
Aug 1 '12 at 18:10 
 
Yeah, don't know why, but even TINYINT columns got converted to long type... Needs further investigation, but I also think it's due to the Python's database interface API. –   
Aug 1 '12 at 18:15 
9

L is for the long data type.

For example,

age = 24 # intbankBalance = 20000005L # long
 
1  
Just beat me! :) –   
Aug 1 '12 at 17:51
3  
You need a long to contain your bank balance? Shouldn't you be sipping lemonade by a pool somwhere? What are you doing answering questions on SO? (+1) -- although you might want to change your comments from // to #. –   
Aug 1 '12 at 17:53 
 
Sorry @mgilson I am a PHP guy :) –   
Aug 1 '12 at 17:58
1  
In Python you code just age = 24 and bankBalance = 20000005L, no type definitions neither semicolons to end statements. :) –   
Aug 1 '12 at 18:06
 
I wish I needed a long to keep my bank balance!! :D –   
Aug 14 '12 at 16:08
4

Because they're not exactly integers, they are 'longs'.

They usually don't offer too much trouble, though

>>> a=1>>> b=long(1)>>> a1>>> b1L>>> a==bTrue

Other stackoverflow question about this: 

转载地址:http://qohbi.baihongyu.com/

你可能感兴趣的文章
qt5 everywhere 编译summary
查看>>
qt5 everywhere编译完成后,找不到qmake
查看>>
arm-linux开机读取硬件时钟,设置系统时钟。
查看>>
交叉编译在x86上调试好的qt程序
查看>>
/dev/input/event0 键盘输入
查看>>
qt 创建异形窗体
查看>>
可重入函数与不可重入函数
查看>>
简单Linux C线程池
查看>>
内存池
查看>>
输入设备节点自动生成
查看>>
opencv test code-1
查看>>
eclipse 导入先前存在的项目
查看>>
GNU hello代码分析
查看>>
Qt继电器控制板代码
查看>>
busybox passwd修改密码
查看>>
wpa_supplicant控制脚本
查看>>
rfkill: WLAN hard blocked
查看>>
gstreamer相关工具集合
查看>>
arm 自动升级脚本
查看>>
RS232 四入四出模块控制代码
查看>>