我一直认为f-strings调用了\uu str\uuu
方法。也就是说,f{x}始终与str(x)相同。然而,对于这个类
class Thing(enum.IntEnum):
A = 0
f{Thing.A}
是'0'
,而str(Thing.A)
是'Thing。一个“
”。如果我使用enum,这个例子就不起作用了。枚举作为基类。
f字符串调用哪些功能?
“f”字符串的用法如下:(在操作系统中也是如此)
number = 41
print(f'Your number is {number}!')
这将导致:
你的号码是41!
如果没有f字符串,代码将打印:
你的号码是{number}!
str()函数将值转换为字符串形式,以便它们也可以与其他字符串组合。
您也可以在{}中放置其他内容。
我希望这能有所帮助。
Python中的f字符串不使用\uu str\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。它们使用<代码>\uuu格式\uuu
。因此,要获得与{Thing.A}相同的结果,需要调用
format(Thing.A)。
<代码>\uuu格式\uuu(…) 方法允许您添加更多格式特性(例如,使用浮点数,您可以将数字四舍五入到两位小数)。
如果没有为类/对象定义form()
,python将回退到__str__
。这就是为什么大多数人认为str()
是f字符串中使用的方法。
这些文档详细介绍了您使用的选项:链接到文档
来自Python参考中的“格式化字符串文字”:f字符串调用“格式
协议”,与格式
内置函数相同。这意味着调用__format__
魔术方法而不是__str__
。
class Foo:
def __repr__(self):
return "Foo()"
def __str__(self):
return "A wild Foo"
def __format__(self, format_spec):
if not format_spec:
return "A formatted Foo"
return f"A formatted Foo, but also {format_spec}!"
>>> foo = Foo()
>>> repr(foo)
'Foo()'
>>> str(foo)
'A wild Foo'
>>> format(foo)
'A formatted Foo'
>>> f"{foo}"
'A formatted Foo'
>>> format(foo, "Bar")
'A formatted Foo, but also Bar!'
>>> f"{foo:Bar}"
'A formatted Foo, but also Bar!'
如果不想调用__format__
,可以在表达式后指定! s
(用于str
)或! r
(用于repr
):
>>> foo = Foo()
>>> f"{foo}"
'A formatted Foo'
>>> f"{foo!s}"
'A wild Foo'
>>> f"{foo!r}"
'Foo()'
这对字符串偶尔有用:
>>> key = 'something\n nasty!'
>>> error_message = f"Key not found: {key!r}"
>>> error_message
"Key not found: 'something\\n nasty!'"
本文向大家介绍JavaScript 数字的字符串表示形式,包括了JavaScript 数字的字符串表示形式的使用技巧和注意事项,需要的朋友参考一下 示例 JavaScript具有从Number到String表示形式的本地转换,从2到36的任何基数。 十进制(以10为底)之后最常见的表示形式是十六进制(以16为底),但本节的内容适用于范围内的所有底。 为了将数字从十进制(以10为底)转换为十六进制(
我遇到了一个奇怪的错误,我正在努力理解。做一些常规代码清理并将所有字符串格式转换为f字符串。这是在Python 3.6.6上 此代码不起作用: 但是,这(功能相同)确实有效: 我觉得我可能错过了一些明显的东西,并且对第二次迭代很好,但是我想了解这里发生了什么。
问题内容: 我有一个C python扩展名,我想打印一些诊断信息。 我收到一个字符串作为PyObject *。 获取此对象的字符串表示形式(使其可用作const char *)的规范方法是什么? 更新: 澄清以强调访问为const char *。 问题答案: 使用(模仿Python的函数)或(模仿),然后调用get (您可以并且通常应该将其用作,例如: 任何人都可以使用此方法。如果您完全确定是Py
问题内容: 为什么当我使用以下操作对字符求和时,它返回数字而不是字符?它不应该给出相同的结果吗? 下面的代码复制了字符: doubleChar(“ The”)→“ TThhee” 问题答案: 以下表达式的结果 是String连接的结果。Java语言规范说明 字符串串联的结果是对String对象的引用,该对象是两个操作数字符串的串联。在新创建的字符串中,左侧操作数的字符位于右侧操作数的字符之前。 的
问题内容: 假设我定义了以下类型: 我将如何以编程方式将类型作为字符串获取,因此以后可能很容易重构,而不是: 我不太喜欢,因为它实例化了它,也可以从Interface实例化。 问题答案: 您可以使用包装(包装也可以在内部使用)。您可以从 指向 该类型的 指针 开始,并使用没有分配的 类型化_指针值,并且可以使用来从其描述符导航到指针的 _基本 类型(或 元素 类型)的描述符。 例: 输出(在Go
问题内容: 在Java中,我可以覆盖类的方法。然后,Java的print函数将打印由其定义的对象的字符串表示形式。是否有与Java等效的Python ? 例如,我有一个PlayCard类。我有一个PlayCard实例c。现在: 但是我想要的是这样的: 如何自定义类实例的字符串表示形式? 我正在使用Python 3.x 问题答案: 与Java最接近的等效项是为您的类实现。将其放在您的类定义中: 您可