2014-02-09 58 views
0

問題是我有一個整數變量(例如X = 123)需要與字符串連接(例如「L」),並仍然保留一個「整數」。其原因是,我傳遞通過API調用的ID需要的ID是在以下格式:如何連接整數和字母,使結果保持整數

10150247729954L 

注意,因爲沒有報價,它不是一個字符串。我假設它仍然是一個整數變量,因爲它與崇高中的其他數字一樣紫色。

例如,我怎麼把這個整成需要的格式:

integer = 10150247729954 
desired_integer = 10150247729954L 

這是我已經試過這導致錯誤:

int('10150247881525L') 
ValueError: invalid literal for int() with base 10: '10150247881525L' 

當我只是嘗試通過API調用,將字符串我得到:

TypeError: %d format: a number is required, not str 

回答

7

L是數值的一部分。

相反,在Python 2.x的,它是part of a integer literal所理解由Python解析器 - 它導致long值Vs的值int,如果它沒有後綴。 (Python會自動向上推動較大的整數常量根據需要長值,則L是在這種情況下是可選的。)

再版的long還將與L,那裏沒有後綴爲int值後綴。

使用long(anInt)強制顯式從int轉換爲long


Python 3中removes the "L" notation,因爲它有效地結合long/int(參考文獻integer changes)。

4

基本上,你要一個整數轉換成long integer。這可以用long內置來完成:

>>> integer = 10150247729954 
>>> long(integer) 
10150247729954L 
>>> 
+0

太棒了!我對一個「長整數」到底是什麼感到困惑,爲什麼它會在整數上附加一個字母L? – Chris

+3

長整數是大於機器本機字大小的整數,蟒蛇長整數支持任意大小的整數,而int限於機器的字大小。 int和long之間的區別現在在現代python代碼中是不相關的,因爲現在python在必要時透明地在int和long之間進行轉換,事實上,在Python 3中已經刪除了L後綴。 –