format(value, format_spec='') 其中format_spec参数必须是一个字符串类型的,否则会抛出 TypeError异常
如果format_spec参数是一个空的字符串,且value没有实现 __format__(value, format_spec) 实例方法;则该函数结果与str(value)结果一致,如果实现了 __format__(value, format_spec) 此方法,则会返回该方法值。
class B:
def __init__(self):
self.l="lichf"
self.n="19"
self.i="henan"
def __str__(self):
return self.l+self.n+self.i
b= B()
print(format(b))
当以 ==format(value, format_spec)==这种方式调用的时候,该方式会被翻译成 type(value).__format__(value, format_spec) 方式;如果value是一个对象,则该对象必须实现 __format__(value, format_spec) 实例方法。
其中 __format__(self,format_spec) 实例函数必须返回一个str类型
class B:
def __init__(self):
self.l="lichf"
self.n="19"
self.i="henan"
self.ag=19
def __str__(self):
return self.l+self.n+self.i
def add(self,age):
print(int(self.n)+age)
def __format__(self,format_spec):
return format(self.ag,format_spec)
b= B()
print(format(b))
b.add(11)
B.add(b,11)
print(format(b,".5f"))
str.format(*args, **kwargs) 返回值是一个字符串类型
其中str又被称作“Format strings”,其中包含被 {} 包裹的“replacement fields”,如果没有被 {} 包裹,则被称作literal text(文字文本),会被直接复制到输出中,如果文本文字中需要含有{},则采用{{}}这种方式。相关实例如下:
>>> "{{}}".format()
'{}'
>>> "{{hello}}".format()
'{hello}'
>>>
其中replacement fields 要与 format方法的参数一一对应,或通过位置参数对应或者通过关键字参数对应;实例如下:
>>> a=3.14
>>> b="hello"
>>>> "PI {0} {1}".format(a,b)
'PI 3.14 hello'
>>> "PI {x} {y}".format(x=a,y=b)
'PI 3.14 hello'
>>>
class B:
def __init__(self):
self.l="lichf"
self.n="19"
self.i="henan"
self.ag=19
def __str__(self):
return self.l+self.n+self.i
def add(self,age):
print(int(self.n)+age)
def __format__(self,format_spec):
return format(self.ag,format_spec)
b = B()
print("{0.l} ni hao".format(b)) # lichf ni hao
print("{x.l} ni hao".format(x=b)) # lichf ni hao
>>> a=3.14
>>> b="hello"
>>>> "PI{x:a<7}{y}".format(x=a,y=b)
'PI3.14aaahello'
>>> "PI{x:.7f}{y}".format(x=a,y=b)
'PI3.1400000hello'
>>>
f格式大概同上,实例如下:
>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'
>>> f"He said his name is {name!r}."
"He said his name is 'Fred'."
>>> f"He said his name is {name!s}."
'He said his name is Fred.'
>>>