为什么Python中有这么多格式化风格?
我最近观看了一个Python教程,其中作者一直在处理各种Python字符串格式表达式,我被一个想法打动了: 为什么Python中有这么多字符串格式风格为什么Python中有这么多格式化风格?,python,python-3.x,string-formatting,Python,Python 3.x,String Formatting,我最近观看了一个Python教程,其中作者一直在处理各种Python字符串格式表达式,我被一个想法打动了: 为什么Python中有这么多字符串格式风格 有一种基于C语言printf的方法(顺便说一句,在各种来源中,它被认为是不推荐的,并计划删除,但在标准Python文档(!)中有大量的例子) 另一方面,还有处理字符串的C#派生.format()方法 最后,随着Python3.6的出现,我们得到了格式的f-string literal,称为f-string 有些还包括string模块,但对我来说
- 有一种基于C语言
的方法(顺便说一句,在各种来源中,它被认为是不推荐的,并计划删除,但在标准Python文档(!)中有大量的例子)printf
- 另一方面,还有处理字符串的
派生C#
方法.format()
- 最后,随着Python3.6的出现,我们得到了
,称为格式的f-string literal
f-string
- 有些还包括
模块,但对我来说,这似乎有些过分string
“在Python3.0中,%运算符由一个更强大的字符串格式化方法format()补充。对str.format()方法的支持已经被后传到Python2.6中。”这就是演化的样子 “我们需要字符串连接” 当然<代码>“你好”+“+”世界“或者,如果你愿意,
”。加入(['hello',world')
“但是“找到”+str(var)+“匹配”
有点笨拙。我听说Lisp有原则
?”
哦,好的,这里:“找到了%i个匹配项”%var
(…时间流逝…)
“我听说您正在对整个语言进行彻底的修改,并将print
变成一个函数。喘息我们能不能也解决这个字符串格式的问题,毕竟这很疯狂?新手不明白为什么在插入多个变量时需要括号,实际上,重写字符串的模运算符是一件非常奇怪的事情。”
嗯,你说得对,好吧,这里。找到了{0}个匹配项。格式(var)
是的,让我们摆脱这种不直观的复杂性。我们不希望模是一个特例,它是不雅观的
“谢谢。但是等等,确实有很多代码使用旧语法,当你比较它们时,新语法真的很笨拙。”
啊。我们可以让它不那么笨拙。有一些语法糖!f'found{var}matches'
,还有更多的东西来自哪里
“嗯,我不知道。模更容易输入。”
你快把我逼疯了。好吧,如果你愿意,你可以玩它。但不要说我没有警告你。这是一种进化。旧的方法被认为是不合适的,所以新的方法被发明了。Python咒语不应该禁止进步和改进。
prinf
是如此不受欢迎,我从来都不知道它的存在。它们不是在同一时间引入的我认为向后兼容性非常重要,f“…”
使用与.format()
相同的格式字符串,因此实际上只有两种格式字符串。引入.format
后的初衷是不推荐%-格式,但这并没有发生。(这很好。)默认情况下,向Unicode的移动反映了行业内的更广泛的运动。一方面,java采用了它,这有助于巩固标准。3.6,这是唯一的方式,考虑2-3.6个过渡期。我的反应与Jonathon Reinhart关于进化论和解决不足的观点相一致,并得到了Pyth.的支持。关于博士。那些投反对票的人如果能提到原因,那将有助于我进一步有意义地参与。谢谢!