python format详解

一、format() 内置函数

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(*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
  • [fill]align][sign] 对齐、填充、标志
>>> a=3.14
>>> b="hello"
>>>> "PI{x:a<7}{y}".format(x=a,y=b)
'PI3.14aaahello'
  • precision 精度
>>> "PI{x:.7f}{y}".format(x=a,y=b)
'PI3.1400000hello'
>>>

三、f-strings

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.'
>>>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值