• 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.'
    >>>
    
  • 相关阅读:
    装饰模式~
    一行代码解决Three.js中只能在一侧看到物体的问题
    【k8s】(五)kubernetes1.29.4离线部署之-初始化第一个控制平面
    澳大利亚昆士兰大学博士后职位—生物活性肽
    SpringBoot整合邮件发送
    现在性价比高的运动耳机有哪些、性价比最高的蓝牙耳机排行榜
    合宙AIR32F103CBT6开发板上手报告
    vue中使用window.open打开assets文件夹下的pdf文件
    Trino 387 JVM 配置详解
    学生HTML个人网页作业作品下载 个人主页博客网页设计制作 大学生个人网站作业模板 dreamweaver简单个人网页制作
  • 原文地址:https://blog.csdn.net/qq_41768644/article/details/139611556