首先是fstring的结构
f ' <text> { <expression> <optional !s, !r, or !a> <optional : format specifier> } <text> ... ''!s'在表达式上调用str(),'!r'调用表达式上的repr(),'!a'调用表达式上的ascii() 1.默认情况下,f-string将使用str(),但如果包含转换标志,则可以确保它们使用repr () !
class Comedian: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.age = age def __str__(self): return f"{self.first_name} {self.last_name} is {self.age}." def __repr__(self): return f"{self.first_name} {self.last_name} is {self.age}. Surprise!"调用
>>> new_comedian = Comedian("Eric", "Idle", "74") >>> f"{new_comedian}" 'Eric Idle is 74.' >>> f"{new_comedian}" 'Eric Idle is 74.' >>> f"{new_comedian!r}" 'Eric Idle is 74. Surprise!'2.!a的例子
>>> a = 'some string' >>> f'{a!r}' "'some string'"等价于
>>> f'{repr(a)}' "'some string'"3.!d的例子
类似2
pycon2019有人提出的一个展望!d的功能实现: 在python3.8中以及实现上述功能,不过不再使用!d了改为了f"{a=}"的形式
转载于:https://www.cnblogs.com/c-x-a/p/10841930.html
相关资源:JAVA上百实例源码以及开源项目