• 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.'
    >>>
    
  • 相关阅读:
    窃取任意GitHub Actions敏感信息如此简单?——只需要分支改个名?
    【NODE.JS】多进程架构(二)—— 句柄传递
    uniapp之uni-starter小程序多端研发框架搭建与项目实践
    从一到无穷大 #13 How does Lindorm TSDB solve the high cardinality problem?
    vue循环语句v-for中元素绑定值问题
    使用CycleGAN训练自己的数据集
    Java“牵手”义乌购商品列表页数据采集+义乌购商品价格数据排序,义乌购API接口申请指南
    MySQL版本升级
    mysql 随笔
    一种改进多旋翼无人机动态仿真的模块化仿真环境研究(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/qq_41768644/article/details/139611556