Что означают 1_000 и 100_000?
Поскольку я изучал Python, я иногда видел примеры начинающих, которые выглядят так:
sum_sq = [None] * 1_000
Я купил три книги Python, и никто не упомянул, что означает 1_000
и 100_000
что я вижу в этих примерах.
Мой вопрос: 1_000
же, как 1000? И если да, то почему они пишут его как 1_000
? Есть ли у него специальная функция, которой нет в 1000? Вещи как:
if __name__ == __main__
имеют разумные причины для использования подчеркивания, и я не вижу причины, по которой используется 1_000
.
Ответы
Ответ 1
Они разрешены с Python 3.6, см. PEP 515 - Подчеркивание в числовых литералах. Как указано в PEP
Символы подчеркивания не имеют смыслового значения, а литералы анализируются так, как если бы подчеркивания отсутствовали.
Таким образом, они доступны только для чтения для больших чисел, бинарных литералов, шестнадцатеричных адресов и т.д. Некоторые примеры из PEP:
>>> assert 10_000_000 == 10000000
>>> assert 0xCAFE_F00D == 0xCAFEF00D
>>> assert 0b_0011_1111_0100_1110 == 0b0011111101001110
Ответ 2
Да, это так же, как без подчеркивания. У них есть подчеркивания, чтобы действовать как тысяча отторговцев, которые для более длинных чисел могут облегчить их чтение.
Это похоже на то, как в письменном виде мы разделяем тысячи запятыми (или точками в зависимости от вашего региона):
1,000,000 # A million
Из-за того, что это могло бы помешать созданию кортежа, хотя:
n = 1,000,000
print(type(n))
<class 'tuple'>
Python использует символы подчеркивания вместо запятых.