gpt4 book ai didi

python - Python 中的 !r 和 %r 有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 22:07:59 26 4
gpt4 key购买 nike

正如标题所述,这两个标志有什么区别?似乎他们都使用 repr() 将值转换为字符串?另外,在这行代码中:

"{0!r:20}".format("Hello")  

!r 前面的 0 有什么作用?

最佳答案

%r 不是 str.format() 格式化操作中的有效占位符;它仅适用于 old-style % string formatting .它确实通过 repr() 函数将对象转换为表示形式。

str.format() 中,!r 是等价的,但这也意味着您现在可以使用所有 format codes对于一个字符串。通常 str.format() 会调用对象本身的 object.__format__() 方法,但是通过使用 !r, 改为使用 repr(object).__format__()

还有 !s 和(在 Python 3 中)!a 转换器;这些应用 str()ascii()功能优先。

前面的 0 表示 str.format() 方法的哪个参数将用于填充该槽;在您的情况下,位置参数 0"Hello" 。您也可以使用 named 参数,并将对象作为关键字参数传递:

"{greeting!r:20}".format(greeting="Hello")  

除非您使用的是 Python 2.6,否则您可以省略它,因为没有索引或名称的插槽会自动编号;第一个 {}0,第二个 {} 采用索引 1 处的第二个参数,依此类推。

关于python - Python 中的 !r 和 %r 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33097143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com