Как Python управляет интервалом и долго?

Кто-либо знает, как Python управляет внутренне интервалом и длинными типами?

  • Это выбирает правильный тип динамично?
  • Каков предел для интервала?
  • Я использую Python 2.6, отличается с предыдущими версиями?

Как я должен понять код ниже?

>>> print type(65535)
<type 'int'>
>>> print type(65536*65536)
<type 'long'>

Обновление:

>>> print type(0x7fffffff)
<type 'int'>
>>> print type(0x80000000)
<type 'long'>
105
задан ted 25 October 2012 в 09:48
поделиться

4 ответа

int и длинные были «едины» . Несколько версий обратно . До этого можно было переполнить Int в Math Ops.

3.x дополнительно продвинул это, исключая долгое в целом и только имеющую INT.

  • Python 2 : SYS.MAXINT содержит максимальное значение, которое может держать Python INT.
    • На 64-битном Python 2.7 размер составляет 24 байта. Проверьте со Sys.getsizeof () .
  • Python 3 : Sys.maxsize содержит максимальный размер в байтах Python INT может быть.
    • Это будут гигабайты в 32 битах, а также exabytes в 64 битам.
    • Такой большой INT будет иметь значение, аналогичное 8 к мощности SYS.maxsize .
110
ответ дан 24 November 2019 в 04:01
поделиться

Это PEP должно помочь.

Нижняя строка заключается в том, что вам действительно не нужно беспокоиться об этом в версиях Python> 2.4

15
ответ дан 24 November 2019 в 04:01
поделиться
-

На моей машине:

>>> print type(1<<30)
<type 'int'>
>>> print type(1<<31)
<type 'long'>
>>> print type(0x7FFFFFFF)
<type 'int'>
>>> print type(0x7FFFFFFF+1)
<type 'long'>

Python использует INT (32 бит подписанных целых чисел, я не знаю, есть ли они C Ints под капотом или нет) для значений, которые вписываются в 32 бит, но автоматически переключается в длительные (произвольно большое количество битов - то есть биньумов) для чего-либо большего. Я предполагаю, что это ускоряет вещи для меньших ценностей, избегая переполнения с помощью бесшовного перехода к Bignums.

5
ответ дан 24 November 2019 в 04:01
поделиться

ОН!!! Я забыл это, чтобы убедиться, что отменить выбор вы должны изменить галочку на null;), у меня была та же проблема.

    builder.setMultiChoiceItems(list, null, new DialogInterface.OnMultiChoiceClickListener() {
...
-121--3926808-

Почему не статический метод в самом классе?

public static void AddHistityEntry (HistityEntry)

Сохраняет класс утилиты. Новый объект может быть дорогим, но, возможно, это не имеет значения. Хорошие значения по умолчанию позволяют расширить код гораздо легче, и вы сэкономите больше времени на обслуживание, чем в производительности, если вы не делаете это в цикле.

-121--1875439-

Он управляет ими, поскольку int и long являются определениями классов родного брата. Они имеют соответствующие методы для +, -, * ,/и т.д., которые будут давать результаты соответствующего класса.

Например,

>>> a=1<<30
>>> type(a)
<type 'int'>
>>> b=a*2
>>> type(b)
<type 'long'>

В этом случае класс int имеет метод __ mul __ (тот, который реализует *), который при необходимости создает длинный результат.

0
ответ дан 24 November 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: