Текущее количество миллисекунд с эпохи 1395245378429
; на UNIX (64 бит/Ubuntu/питон 2.7), вы можете сделать:python обрабатывает длинные ints по-разному на Windows и Unix
>>> t = 1395245378429
>>> type(t)
<type 'int'>
>>> t = 1395245378429L
>>> type(t)
<type 'long'>
>>> int(t)
1395245378429
>>> type(int(t)
<type 'int'>
но на ОС Windows (также 64 бит/питон 2,7), это происходит:
>>> t = 1395245378429
>>> type(t)
<type 'long'>
>>> int(t)
1395245378429L
>>> type(int(t))
<type 'long'>
так, следующий странно наблюдения:
- на Windows,
int(<long>)
возвращает длинный - одинаковое число трактуется как долго в Windows, но ИНТ на UNIX
Я не вижу ничего очевидного в документации, чтобы сказать, что это правильное поведение; существует (правильный) способ преобразования long в int (т. е. его можно использовать в методе, который требует аргумент int)
Обходите * что *, точно? Какое последствие перехода int/long происходит в другом значении, которого вы пытаетесь избежать? – DSM
Обратите внимание, что даже если у вас 64-разрядная ОС, вы все равно можете установить 32-разрядную установку Python, которая, как представляется, здесь. –
Обратите внимание, что 'int (20000000000000000000)' будет возвращать 'long' в обоих python 32 и 64 бит, потому что это число больше, чем' 2 ** 64'. Преобразование из 'int' в' long' почти всегда выполняется молчаливо, так как, кроме того, выполнение операции не должно быть значительным изменением в поведении. Я не знаю ситуации, которая вызывает «OverflowError» между целыми типами. – Bakuriu