由于我一直在学习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__
的原因。
答案 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使用下划线而不是逗号。