《学习Python的格式表达式》一书中的勘误表

bxpogfeg  于 2022-12-27  发布在  Python
关注(0)|答案(1)|浏览(111)

我正在阅读《学习Python第5版》这本书,遇到了下面引用的(我所认为的)矛盾的说法。
在第152页上写道:
最后,你还可以使用字符串格式化方法调用和表达式将整数转换为特定于基的字符串,只返回数字,而不是Python文字字符串

>>> '%o, %x, %x, %X' % (64, 64, 255, 255)
'100, 40, ff, FF'

(着重号是我的)
正如我们在上面突出显示的(粗体)语句中所看到的,作者说字符串格式化方法调用和表达式返回"数字"而不是"文字字符串"。但我发现这是不正确的,因为我们可以清楚地看到结果"100,40,ff,ff"确实是一个字符串而不是"数字"。
而且,在第156页上,作者似乎写得完全相反:
字符串格式生成字符串,而不是数字:

>>> ('%.2f' % (1 / 3.0))
'0.33'

正如我们在第二个引用的语句中可以看到的,作者现在说字符串格式化产生的是"字符串"而不是"数字",这似乎与他们的第一个语句(第152页)相矛盾。
所以我的问题是,这是书中的勘误吗,两种说法中哪一种是正确的。

oaxa6hgo

oaxa6hgo1#

>>> type('%o, %x, %x, %X' % (64, 64, 255, 255))
    <class 'str'>

python告诉,这个格式化字符串是string类型。显然,它不能是任何其他类型。
对于另一个字符串返回相同的结果。

>>> type(('%.2f' % (1 / 3.0)))
    <class 'str'>

作者试图强调字符串格式化方法的意义。格式化方法不是返回 * numeric -type,而是将其转换为 string-type。
作为一个快速的解决方案,我建议省略句子中你强调的部分(“
只返回数字,不返回Python字符串 *”),这将有效地消除你的困惑,而不会损害任何其他事实。
您需要始终记住,字符串格式化方法将始终只返回string类型。

相关问题