Кто-либо знает, как Python управляет внутренне интервалом и длинными типами?
Как я должен понять код ниже?
>>> print type(65535)
<type 'int'>
>>> print type(65536*65536)
<type 'long'>
Обновление:
>>> print type(0x7fffffff)
<type 'int'>
>>> print type(0x80000000)
<type 'long'>
int
и длинные
были «едины» . Несколько версий обратно . До этого можно было переполнить Int в Math Ops.
3.x дополнительно продвинул это, исключая долгое в целом и только имеющую INT.
SYS.MAXINT
содержит максимальное значение, которое может держать Python INT.
Sys.getsizeof ()
. Sys.maxsize
содержит максимальный размер в байтах Python INT может быть.
SYS.maxsize
. Это PEP должно помочь.
Нижняя строка заключается в том, что вам действительно не нужно беспокоиться об этом в версиях Python> 2.4
На моей машине:
>>> 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.
ОН!!! Я забыл это, чтобы убедиться, что отменить выбор вы должны изменить галочку на 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 __
(тот, который реализует *), который при необходимости создает длинный
результат.