Moje pytanie brzmi: dlaczego wartości całkowite wiersza MySQL mają przyrostek "L"? Oto szczegóły:

Następujący słownik - sztucznie sformatowany tutaj dla łatwości wyświetlania -

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

Składa się z kolumn tabeli bazy danych MySQL zetrytują wynikiem odczytu od stole.

Mogę usunąć "L", przechodząc te wartości w Int (), więc jeśli ten słownik był w zmiennej nazwie rzucony_read, mógłbym to zrobić:

int(snapped_read['reading']) i 3018L zmieniłby się na 3018.

Jestem po prostu ciekawy, dlaczego liczba całkowita pojawiają się w ten sposób.

46
octopusgrabbus 1 sierpień 2012, 21:46

3 odpowiedzi

Najlepsza odpowiedź

Ponieważ w wersjach Pythona przed Pythonem 3, długie literały liczby całkowitej zostały oznaczone przyrostkiem L lub L. W Pythonie 3, int s i long s został połączone w tylko int, który działa prawie jak long przyzwyczajony do.

Należy pamiętać, że technicznie, technicznie, python (2) "s int był równoważny z C's long, podczas gdy Python's {X2}} był bardziej podobny do BigNumber - typ z nieograniczoną precyzją ( który jest teraz przypadkiem typu Pythona 3 {x4}}.)

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

48
JAB 1 sierpień 2012, 17:51

L jest dla typu danych long.

Na przykład,

age = 24 # int
bankBalance = 20000005L # long
13
Quentin Pradet 14 kwiecień 2015, 07:45

Ponieważ nie są dokładnie liczbami całkowitymi, są "długie".

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

Zwykle nie oferują zbyt wielu kłopotów

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

Inne Pytanie o stackoverflow Pytanie o to: Oto

7
Community 23 maj 2017, 12:34