字符串格式化方法调用——为什么是格式化方法?——命名方法和上下文中立的参数:美学 vs 实践

未匹配的标注

格式化方法还声称了一个优点:使用更有助记忆的 format 方法名称来替换 % 操作符,且不区分单个和多个替换值。前者可能让初学者咋一看觉得方法更简单(“format”可能被多个“%”字符更容易解析),然而这很可能因人而异且似乎不重要。

一些人可能认为后一个差异更重要——使用格式表达式,单个值可以被单独给出,但多个值必须被包裹在元组中:

>>> '%.2f' % 1.2345 # Single value
'1.23'
>>> '%.2f %s' % (1.2345, 99) # Multiple values tuple
'1.23 99'

技术上讲,格式化表达式接收单个替换值,接收一个或多个项的元组。因此,因为单个项可以被单独给出或在元组中,要被格式化的元组必须作为一个嵌套元组提供——一个可能少见但合理的情况:

>>> '%s' % 1.23 # Single value, by itself
'1.23'
>>> '%s' % (1.23,) # Single value, in a tuple
'1.23'
>>> '%s' % ((1.23,),) # Single value that is a tuple
'(1.23,)'

另一方面,格式化方法,对多个值或本身是元组的单个值只接收通用函数参数,而不是都要求是元组,从而将这个情况变得更严格:

>>> '{0:.2f}'.format(1.2345) # Single value
'1.23'
>>> '{0:.2f} {1}'.format(1.2345, 99) # Multiple values
'1.23 99'
>>> '{0}'.format(1.23) # Single value, by itself
'1.23'
>>> '{0}'.format((1.23,)) # Single value that is a tuple
'(1.23,)'

因此,这个方法可能对初学者没那么困惑,且引起了更少的编程错误。然而,这似乎是一个相当不重要的问题——如果表达式总是将值包裹在元组中并忽略掉非元组的选项,本质上和这里的方法调用是一样的。而且,为达到其受限的使用模式,方法导致了在膨胀的代码大小上的代价。考虑到表达式在Python历史上的广泛使用,这个问题可能更理论而非实际,可能不足以证明将现有代码移植到一个新工具(它是和自己想要包括的工具如此相似)是合理的。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~