1_000和100_000是什么意思?

时间:2018-04-15 00:52:26

标签: python python-3.x

由于我一直在学习Python,我有时看到的初学者示例如下:

mylist = [line.split(',')[0] for line in yourstring.split('\n')]

我已经购买了三本Python书籍,没有人提到我在这些例子中看到的sum_sq = [None] * 1_000 1_000的含义。

我的问题是:100_000与1,000相同吗?如果是这样,为什么他们将其写为1_000?它有一个1000不具备的特殊功能吗?比如:

1_000

使用下划线有明智的理由,我看不出使用if __name__ == __main__ 的原因。

2 个答案:

答案 0 :(得分:10)

自Python 3.6起允许这些,请参阅PEP 515 - Underscores in Numeric Literals。如PEP中所述

  

下划线没有语义含义,文字解析就像下划线不存在一样。

因此它们仅适用于大数字,二进制文字,十六进制地址等的可读性.PEP的一些例子:

>>> assert 10_000_000 == 10000000

>>> assert 0xCAFE_F00D == 0xCAFEF00D

>>> assert 0b_0011_1111_0100_1110 == 0b0011111101001110

答案 1 :(得分:5)

是的,它与没有下划线的情况相同。他们强调那里有千名分隔符,对于更长的数字可以使它们更容易阅读。

它类似于写作方式,我们用逗号(或根据您所在地区的点数)分隔数千个:

1,000,000 # A million

因为这会干扰元组创建,但是:

n = 1,000,000
print(type(n))

<class 'tuple'> 

Python使用下划线而不是逗号。