在python中,如果想要将字符串与变量连接起来,比如想打印记录一个函数输入内容和输出内容的日志,一般方法有 %-formatting 和 str.format() 。从Python 3.6开始,f-string 是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快。
1. 使用方法
-
在字符串前面加上 f
-
在字符串内部,将需要连接的变量用 {} 括起来即可
示例:
a = f'input:{input},output:{output}'
2. f-string 的优点
-
代码简洁,且变量名多的时候,不需要去数数,也没有繁琐的单引号双引号。
-
括号{}里面的变量,可以是字符串类型,也可以是整型、浮点型,或者是复杂类型,比如数组、词典等,会自动转换成成字符串形式。
-
括号{}里面还可以是函数,比如 f’数组a的长度为:{len(a)}'。一句话,只要是位于 {} 中的,都会当做 python 代码来执行。但里面只能写表达式,不能写执行语句如{a=2}之类的。
-
f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式,速度比%-formatting 和 str.format() 都要块。
因此对于Python3.6及以后的版本,推荐使用 f-string 进行字符串格式化。
在Python 3.6之前,对字符串文本中进行格式化的主要方法是:%-formatting 和 str.format()。
%-formatting
字符串对象具有使用%运算符的内置操作,可以使用它来格式化字符串。
name = "tom"
print("猫的名字叫%s"%name)
>>> 猫的名字叫tom
上面的代码看起来足够易读,但是,一旦开始使用多个参数和更长的字符串,代码就将变得不太容易阅读。
str.format()
是对 %-formatting 的改进,它使用正常的函数调用语法,使用str.format() ,替换字段用大括号标记。
name = "tom"
age = 2
print("猫的名字叫{1},今年{0}岁了".format(age, name))
>>> 猫的名字叫tom,今年2岁了
使用 str.format() 格式化代码比使用 %-formatting 更易读,但当处理多个参数和更长的字符串时,str.format()看起来仍然非常冗长。
f-Strings
一种改进Python格式字符串的新方法,只需要在格式化字符串前加 f (大小写均可)
name = "tom"
age = 2
print(f"猫的名字叫{name},今年{age}岁了")
>>> 猫的名字叫tom,今年2岁了
3. f-string中引号使用存在的问题
-
f-string 大括号内使用的引号不能和大括号外的引号定界符引号冲突,需根据情况灵活切换使用单引号、双引号、单三引号、双三引号。
-
大括号外的引号还可以使用 \转义,但大括号内不能使用 \转义。
-
f-string大括号外如果需要显示大括号,则应输入连续两个大括号{{ }};大括号内需要引号,使用引号即可。
如有错误,欢迎私信纠正,谢谢支持!