当前位置: 首页 > news >正文

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=19def __str__(self):return self.l+self.n+self.idef 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=19def __str__(self):return self.l+self.n+self.idef 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.'
>>>

相关文章:

  • CI/CD实战面试宝典:从构建到高可用性的全面解析
  • UE5.2打包安卓
  • k8s可练习实验分享
  • 1毛钱1百万token,写2遍红楼梦!国产大模型下一步还想卷什么?
  • 【数据库设计】宠物商店管理系统
  • Python第二语言(十四、高阶基础)
  • Internet Download Manager(IDM6.41)安装教程+软件安装包下载
  • 【机器学习】机器学习赋能医疗健康:从诊断到治疗的智能化革命
  • MySql几十万条数据,同时新增或者修改
  • 制作ubuntu18.04 cuda10.2+ROS1的 docker镜像
  • Python自动化
  • 机器学习--线性模型和非线性模型的区别?哪些模型是线性模型,哪些模型是非线性模型?
  • 攻防演练之-成功的钓鱼邮件溯源
  • 自然语言处理领域的重大挑战:解码器 Transformer 的局限性
  • Sm4【国密4加密解密】
  • [NodeJS] 关于Buffer
  • gulp 教程
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JavaScript 一些 DOM 的知识点
  • MySQL用户中的%到底包不包括localhost?
  • Nodejs和JavaWeb协助开发
  • Spark学习笔记之相关记录
  • SpringBoot 实战 (三) | 配置文件详解
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 安装python包到指定虚拟环境
  • 从零开始在ubuntu上搭建node开发环境
  • 坑!为什么View.startAnimation不起作用?
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 使用 QuickBI 搭建酷炫可视化分析
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 自动记录MySQL慢查询快照脚本
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (09)Hive——CTE 公共表达式
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (数据结构)顺序表的定义
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)【Hibernate总结系列】使用举例
  • (转)h264中avc和flv数据的解析
  • (转)项目管理杂谈-我所期望的新人
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .gitignore文件忽略的内容不生效问题解决
  • .gitignore文件设置了忽略但不生效
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET delegate 委托 、 Event 事件
  • .NET6实现破解Modbus poll点表配置文件
  • .NET和.COM和.CN域名区别
  • /etc/skel 目录作用
  • ??在JSP中,java和JavaScript如何交互?
  • [ C++ ] STL---stack与queue