python3格式化字符串 f-string的高级用法(推荐)
作者:油腻胖大叔 发布时间:2023-04-13 00:56:55
f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP 498 – Literal String Interpolation,主要目的是使格式化字符串的操作更加简便。
f-string在形式上是以 f 或 F 修饰符引领的字符串(f'xxx' 或 F'xxx'),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式:
While other string literals always have a constant value, formatted strings are really expressions evaluated at run time.
(与具有恒定值的其它字符串常量不同,格式化字符串实际上是运行时运算求值的表达式。)
—— Python Documentation
f-string在功能方面不逊于传统的%-formatting语句和str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化。
从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快!
在Python 3.6之前,有两种将Python表达式嵌入到字符串文本中进行格式化的主要方法:%-formatting和str.format()。
%-formatting
字符串对象具有使用%运算符的内置操作,您可以使用它来格式化字符串。
name = "tom"
print("猫的名字叫%s"%name)
输出:
cat name is tom
上面的示例代码看起来足够易读,但是,一旦开始使用多个参数和更长的字符串,代码就将变得不太容易阅读。
name = "tom"
age = 2
action = "迅速"
disposition = "懒"
print("猫的名字叫%s,今年%d岁了,抓老鼠非常%s,但是非常%s,白天总睡觉。"%(name, age, action, disposition))
输出:
猫的名字叫tom,今天2岁了,抓老鼠非常迅速,但是非常懒,白天总睡觉。
str.format()
str.format()是对%-formatting的改进。它使用正常的函数调用语法,并且可以通过对要转换为字符串的对象的__format __()方法进行扩展。
使用str.format(),替换字段用大括号标记:
name = "tom"
print("猫的名字叫{}".format(name))
输出:
猫的名字叫tom
也可以通过引用其索引,以任何顺序引用变量:
name = "tom"
age = 2
print("猫的名字叫{1},今年{0}岁了,今天星期{0}".format(age, name))
输出:
猫的名字叫tom,今年2岁了,今天星期2
也可以使用 ** 来用字典,巧妙的完成格式化:
cat = {"name": "tom", "age": 2}
print("猫的名字叫{name},今年{age}岁了".format(**cat))
输出:
猫的名字叫tom,今年2岁了
使用 str.format() 格式化代码比使用 %-formatting 更易读,但当处理多个参数和更长的字符串时,str.format()看起来仍然非常冗长。
f-Strings:一种改进Python格式字符串的新方法
f-Strings语法与str.format()使用的语法类似,但较少细节啰嗦,只需要在格式化字符串前加f或F即可。看看这是多么容易可读:
name = "tom"
age = 2
print(f"猫的名字叫{name},今年{age}岁了")
输出:
猫的名字叫tom,今年2岁了
格式化时可以使用函数:
name = "tom"
age = 2
print(F"猫的名字叫{name.upper()},今年{age}岁了")
输出:
猫的名字叫TOM,今年2岁了
格式化时可以使用字典:
cat = {"name": "tom", "age": 2}
print(F"猫的名字叫{cat['name']},今年{cat['age']}岁了")
输出:
猫的名字叫tom,今年2岁了
格式时可以对浮点数精度做限制:
name = "tom"
age = 2.1274
print(F"猫的名字叫{name},今年{age: .2f}岁了")
输出:
猫的名字叫tom,今年 2.13岁了
来源:https://www.cnblogs.com/testlearn/p/11704984.html


猜你喜欢
- 本文分析了让ThinkPHP的模板引擎达到最佳效率的方法。分享给大家供大家参考,具体如下:默认情况下ThinkPHP框架系统默认使用的模板引
- 获取一组radio被选中项的值var item = $(’input[@name=items][@checke
- 这篇文章主要介绍了python基于celery实现异步任务周期任务定时任务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- 前言在几周前,我开始工作于一个证券投资组合网站。虽然我只能使用 React 完成整个网站,但我决定使用 Go 来创建一个可以处理某些任务(例
- Python os.remove() 方法os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError
- 在还源数据库时出现以下错误(详情参见下图):System.Data.SqlClient.SqlError: 在对 'C:\Progr
- 下面来先看一个简单例子<!DOCTYPE html><html lang="zh-CN" ng-app
- 具体代码如下所述:__author__ = 'Yue Qingxuan'# -*- coding: utf-8 -*-#求质
- 于是我登陆主机的管理面板,重启了网站服务,ldb文件就消失了,网站打开也正常了,但过了数小时后,网站又再次出现以上情况,此种情况持续了好一段
- 一个比较好用的字符串截取函数:function substring($str, $start, $length){ //比较好用字符串截取函
- 本文主要介绍了vue中的数据绑定原理的实现,分享给大家,也给自己留个笔记,具体如下:vue中的响应式数据绑定是通过数据劫持和观察者模式来实现
- 当遇到一个模板标签(template tag)时,模板解析器就会把标签包含的内容,以及模板解析器自己作为参数调用一个python函数。 这个
- 方法一import randomimport numpy as npfrom PIL import Image, ImageOps, Ima
- 训练模型时,我们并不是直接将图像送入模型,而是先将图像转换为tfrecord文件,再将tfrecord文件送入模型。为进一步理解tfreco
- python格式化字符串有%和{}两种 字符串格式控制符.字符串输入数据格式类型(%格式操作符号)%%百分号标记#就是输出一个%%c字符及其
- 如下所示:在def __init__(self):函数里添加self.setFixedSize(self.width(), self.hei
- 建造者模式的适用范围:想要创建一个由多个部分组成的对象,而且它的构成需要一步接一步的完成。只有当各个部分都完成了,这个对象才完整。建造者模式
- 本文实例为大家分享了python实现手写数字识别的具体代码,供大家参考,具体内容如下import numpyimport scipy.spe
- 老师罚学生抄写英文单词,结果学生给抄成这样……
- 本文实例讲述了Python基于pyCUDA实现GPU加速并行计算功能。分享给大家供大家参考,具体如下:Nvidia的CUDA 架构为我们提供