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. Числа