为什么选择大括号作为格式说明符?

2024-04-20 09:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

历史好奇与特色设计

还有一个问题,Why was the percent sign (%) chosen as the format specifier for the printf family of functions?但是百分号(和it's extensions)的原因肯定是(?)迷失在时间的迷雾中。你知道吗

无论如何,PythonC#都使用大括号语法{_},而不是旧的百分比语法%_。你知道吗

这些语言/功能的设计者有没有给出过这样的理由?你知道吗

更一般地说,有没有理由使用两个不同的字符({})而不是只使用一个字符作为格式说明符?是否有理由对格式说明符的两侧进行划界,而不仅仅是左侧?你知道吗

请不要问这个问题哪个更好。那太傻了。你知道吗


Tags: theformatas格式语法历史字符chosen
2条回答

我不知道C#,但在Python中,您可以将格式信息放在大括号中。这使得如果没有某种结束字符,就无法阅读。你知道吗

'The {:4.2f}th number.'.format(3.52352)
'The %4.2fth number.'.format(3.52352)

或者想象一下没有结尾的动态格式。你知道吗

format = '4.2f'
'Number: {1:{0}}.'.format(format, 3.2524)

它允许更多的灵活性和功能性。你知道吗

Python是公开开发的。大多数重大变化都记录在PEPs中。所以,首先要看的是政治公众人物档案。政治公众人物应该有相关邮件列表讨论和跟踪问题的链接。你知道吗

较小的更改,您可能需要搜索python ideas和python dev邮件列表和/或问题跟踪器…但请确保检查文档中的相关“新内容”,因为有时那里有一个有用的链接。你知道吗

任何可以追溯到2.1时代的东西都可以在Guido的Python History博客上讨论。有时你可以在源代码中找到有用的信息。你知道吗

无论如何,在本例中,您需要的是PEP 3101,特别是关于“替代语法”的部分,作者(不是本例中的语言发明者,而是塔林)讨论了一些选择,以及每种选择的参考文献、优缺点。你知道吗

归根结底,一种选择似乎没有特别令人信服的理由;在调查了现有技术之后,可能在其中一个邮件列表上骑自行车数周,这一个就赢了。你知道吗

我想我可以很好地猜测一下原因:Perl和shell以及许多其他传统的*nix东西使用${},并带有大括号选项。$对于任何脱离Perl的Python开发人员来说都是难看的,更重要的是,它可能错误地暗示您可以在Python和Perl中使用相同的格式字符串,或者这会像Perl一样提供自动插值,而不是像Python那样提供显式插值。如果去掉$,大括号显然就不再是可选的了。就在这里。你知道吗


至于C#,在Win32中有两种不同的格式化api,一种类似于printf,另一种基于大括号,用于i18n消息目录。大括号变量不允许使用格式说明符;必须传递WCHAR*字符串。类似于printf的变体不允许排序说明符;您必须按顺序传递所有参数(当您尝试国际化消息时,这真的很糟糕,因为通常很难以所有参数都出现在同一位置的方式编写翻译句子)。NET把两者中最好的融合了起来。你知道吗

相关问题 更多 >