48

私の質問は、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データベーステーブルの列で構成され、テーブルから1回読み取った結果が圧縮されています。

これらの値をint()に渡すことで「L」を削除できるので、その辞書がsnapped_readという名前の変数にある場合は、次のように実行できます。

int(snapped_read['reading'])3018L変更され3018ます。

なぜ整数がこのように表示されるのか知りたいだけです。

4

3 に答える 3

49

Python 3より前のバージョンのPythonでは、長整数リテラルがlまたはL接尾辞で示されていたためです。Python 3では、intsとlongsがちょうどにマージされました。これは以前と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

于 2012-08-01T17:51:30.870 に答える
13

Llongデータ型用です。

例えば、

age = 24 # int
bankBalance = 20000005L # long
于 2012-08-01T17:50:34.500 に答える
8

それらは正確には整数ではないため、「long」です。

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

彼らは通常あまり問題を提供しませんが

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

これに関する他のstackoverflowの質問:ここ

于 2012-08-01T17:51:53.147 に答える