Int

Don’t put 0 before the numbers

>>> 05
	File "<stdin>", line 1
		05
		 ^
SyntaxError: invalid token

Positive and negative numeric signs

>>> 123
123
>>> +123
123
>>> -123
-123

Underscores in Numeric Literals

При записи числа допускаются разделители в виде underscore (_), которые будут проигнорированы:

>>> 1_000_000
1000000
>>> 1_2_3
123

Max Int in Python

В Python 2 были ограничения на размер int, + был тип long.
В Python 3 тип int не ограничен:

>>> googol = 10 ** 100; googol # 🤓
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
>>> googol * googol
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Во многих ЯП такое число вызовет переполнение целочисленного значения и различные нежелательные последствия, так как компьютер не сможет предоставить все необходимое место.

Float

>>> 5.
5.0
>>> 5.0
5.0
>>> 05.0
5.0
>>> 1_000_000.0
1000000.0
>>> 1.0_0_1
1.001
 
>>> 5e0
5.0
>>> 5e1
50.0
>>> 5.0e1
50.0

Numeral systems

Помимо десятичной, можно выразить числа еще в 3-х системах счисления, юзая префиксы для целых чисел:

ПрефиксСистема счисления
0b / 0Bдвоичная
0o / 0Oвосьмеричная
0x / 0Xшестнадцатеричная

Удобно для битовых операций idk

>>> 10    # десятичная СС
10
>>> 0b10  # двоичная СС
2
>>> 0o10  # восьмеричная СС
8
>>> 0x10  # шестнадцатеричная СС
16
>>> bin(65)  # в двоичную СС
'0b1000001'
>>> oct(65)  # в восьмеричную СС
'0o101'
>>> hex(65)  # в шестнадцатеричную СС
'0x41'

Функция chr() преобразует int в его строковый эквивалент (состоящий из одного символа):

>>> chr(65)
'A'

ord() — наоборот:

>>> ord('A')
65

Type conversion

int, float, bool

>>> int(True)
1
>>> int(False)
0
>>> float(True)
1.0
>>> float(False)
0.0

Функция bool() преобразовывает любой тип данных в boolean.

Ненулевые значения преобразуются в True:

>>> bool(True)
True
>>> bool(1)
True
>>> bool(1.0)
True
>>> bool(45)
True
>>> bool(-45)
True

Нулевые значения преобразуются в False:

>>> bool(False)
False
>>> bool(0)
False
>>> bool(0.0)
False

Булевы значения в арифметических операциях будут рассматриваться как 1 / 1.0 и 0 / 0.0:

>>> True + 2
3
>>> True + 2.0
3.0
>>> False + 2
2
>>> False + 2.0
2.0

float, int

При преобразовании “float to int” отсекается всё, что находится после точки:

>>> int(98.6)
98
>>> int(1.0e4)
10000
>>> float(98)
98.0
>>> float(10000)
10000.0

str, int

>>> int('99')
99
>>> int('-23')
-23
>>> int('+12')
12
>>> int('1_000_000')
1000000
>>> str(99)
'99'
>>> str(+12)
'12'
>>> str(1_000_000)
'1000000'
 
# P.s.
>>> str(True)
'True'

Функции int() можно передать основание СС:

>>> int('10', 2)   # двоичная СС
2
>>> int('10', 8)   # восьмеричная СС
8
>>> int('10', 16)  # шестнадцатеричная СС
16

Строки с float числами преобразовываться не будут:

>>> int('98.6')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
    int('98.6')
ValueError: invalid literal for int() with base 10: '98.6'
 
>>> int('1.0e4')
  ...
ValueError: invalid literal for int() with base 10: '1.0e4'

Соус: Книга Простой Python Глава 3. Числа