当前位置: 首页 > 后端技术 > Python

Python值中的下划线是怎么回事?

时间:2023-03-26 10:54:57 Python

Python中下划线的使用很神奇,相信你在各种文章或教程中都见过。在2016年3.6版本之后,Python还引入了一种新的语法,允许下划线也出现在数值中。总结和基本原理本PEP提议扩展Python的语法,以便在“number-from-string”构造函数中,下划线可以用作整数、浮点数和复杂文字的可视分隔符。分组。这是其他现代语言的共同特征,有助于理解长字面值或值应该直观地分成几部分的地方,例如十六进制表示法中的字节或单词。示例:#groupingdecimalnumbersbythousandsamount=10_000_000.0#groupinghexadecimaladdressesbywordsaddr=0xCAFE_F00D#groupingbitsintonibblesinabinaryliteralflags=0b_0011_1111_0100_1110#same,forstringconversionsflags=int('0b_1111_0000',2)规范项目前面的建议数字和标识符后允许下划线数字文字.下划线没有语义意义,并??且数字文字被解析为好像没有下划线一样。文字语法因此,整数文字的表示法如下所示:integer:decinteger|二进制整数|八进制|hexintegerdecinteger:nonzerodigit(["_"]数字)*|"0"(["_"]"0")*bininteger:"0"("b"|"B")(["_"]bindigit)+octinteger:"0"("o"|"O")(["_"]octdigit)+hexinteger:"0"("x"|"X")(["_"]hexdigit)+nonzerodigit:"1"..."9"digit:"0"..."9"二进制数:"0"|"1"octdigit:"0"..."7"hexdigit:digit|"a"..."f"|"A"..."F"浮点数和复数文字:floatnumber:pointfloat|exponentfloatpointfloat:[digitpart]分数|数字部分“。”exponentfloat:(digitpart|pointfloat)exponentdigitpart:digit(["_"]digit)*fraction:"."digitpartexponent:("e"|"E")["+"|"-"]digitpartimagnumber:(floatnumber|digitpart)("j"|"J")构造函数遵循相同的放置规则,下划线可用于以下构造函数:int()(anybase)float()complex()Decimal()进一步的变化新的数字到字符串格式化语法将被扩展以允许_作为千位分隔符这可以使用更具可读性的文字代码轻松生成。[11]语法与逗号相同,例如{:10_}表示宽度为10,带有_分隔符。也将支持并按4位数字分组。允许对下划线进行分组的现有语言实现了大量放置下划线的规则。在语言规范与实际行为相矛盾的情况下,下面列出了实际行为。(“单个”或“多个”是指允许有多少个连续的下划线。)Ada:单个,仅在数字之间[8]C#(7.0版提案):多个,仅在数字之间[6]C++14:单个,数字之间(选择其他分隔符)[1]D:多个,任何地方,包括结尾[2]Java:多个,仅在数字之间[7]Julia:单个,仅在数字之间(但不包括浮点指数部分)[9]Perl5:多个,基本上任何地方,尽管文档说数字之间限制1个下划线[3]Ruby:单个,仅在数字之间(尽管文档说“任何地方”)[10]Rust:多个,除了指数“e”之外的任何地方andbetweendigits[4]Swift:multiple,betweendigitsandattheend(althoughdocssayonly"betweendigits")[5]弃用语法1.放置下划线的规则减少对使用下划线的限制,而不是相对严格的规则如上所述。在其他语言中,通用规则包括只允许一个连续的下划线,并且只能在数字之间。允许有多个连续的下划线,但只能在数字之间。允许使用多个连续的下划线,在除文字开头以外的大多数位置,或在特殊位置(例如小数点后)。最终选择此PEP中的语法是因为它涵盖了常见的用例,并且不包含Python风格指南不鼓励使用的语法。一个不太常见的规则是只允许每N个数字使用下划线(其中N可能是3个十进制文字,或4个十六进制文字)。这是不必要的限制,特别是考虑到这些分隔符位置在不同文化中是不同的。(比如我们国家习惯对4个数字进行分组,即10,000是10,000,不是英文文化中的10,000)2.其他分隔符的另一个建议是使用空格进行分组。虽然字符串是组合相邻文字的先例,但这种行为可能会导致下划线不会产生的意外效果。此外,除了那些基本上忽略任何空格的语言外,没有其他语言使用此规则。c++14引入了单引号用于分组(因为下划线与用户定义的文字会产生歧义),由于单引号已经被Python的字符串文字使用,因此不予考虑。[1]近期整理了上百GB的Python学习资料,包括新手电子书、教程、源码等,免费分享给大家!想上“Python编程学习圈”,发“J”免费领取