f-string 允许使用非常紧凑的表达式来打印带有间距的 str 对象,如下所示:
a = "Hello"
print(f'{a=:>20}')
a= Hello
有没有办法对其他对象执行相同的操作,如下所示:
from pathlib import Path
b=Path.cwd()
print(f'{b=:>20}')
Traceback (most recent call last):
File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode
exec(code, self.locals)
File "<pyshell#11>", line 1, in <module>
TypeError: unsupported format string passed to PosixPath.__format__
替代方案是:
print(f'b={str(b):>20}')
b= /home/user
但是这个方法会丢失我这样做时显示的对象信息:
print(f'{b=}')
b=PosixPath('/home/user')
期望的结果是打印
b= PosixPath('/home/user')
您可以使用
repr()
:
from pathlib import Path
b = Path.cwd()
res = f'{repr(b):>40}'
print(f'b={res}')