在Python如今的版本中,你居然不会f-strings字符串格式化方法?

在Python 3.6的版本中,Python提供了一种新的字符串格式化方法:f-strings,它不仅比其它的格式化方式更易读,更简洁,更不容易出错,并且它们也更快!

首先,我们先了解一下现有的字符串格式化方法。

Python 在 3.6 的这一个版本之前,字符串格式化方法主要有两种:%格式化 和 str.format()。下面我们先来简单的看一下它们的使用方法,以及局限。

1 %-格式化

% 格式化方法从 Python 刚开始的时候就存在了,堪称「一届元老」,但是 Python 官方文档中并不推荐这种格式化方式:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

1.1 如何使用 %格式化

一般的使用方式,想要插入多个变量的话,必须使用元组:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

1.2 %格式化的缺陷

上面的代码示例看起来还能读,但是,一旦开始使用多个参数和更长的字符串,你的代码将很快变得不那么容易阅读:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

可以看出,这种格式化并不是很好,因为它很冗长并且容易导致错误,比如没有正确显示元组或字典。

不过还好我们还有 str.format()。

2 str.format()

Python 2.6 中引入了 str.format() 格式化方法:

https://docs.python.org/3/library/stdtypes.html#str.format

2.1 str.format() 的使用

str.format() 是对 %格式化 的改进,它使用普通函数调用语法,并且可以通过 format() 方法为对象进行扩展。

使用 str.format() 时,替换字段用大括号进行标记:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

并且可以通过索引来以其他顺序引用变量:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

或者可以这样:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

从字典中读取数据时还可以使用 **:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

确实,str.format() 比 %格式化高级了一些,但是它还是有自己的缺陷。

2.2 str.format() 的缺陷

在处理多个参数和更长的字符串时仍然可能非常冗长,麻烦!看看这个:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

3 f-Strings

还好,现在我们有了 f-Strings,它可以使得字符串格式化更加容易。

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

下面从多个方面看下 f-strings 的使用方法,看完后,我相信你会对「人生苦短,我用 Python」有更深地赞同~

3.1 f-Strings 使用方法

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

是不是很简洁?!还有更牛叉的!

因为 f-strings 是在运行时计算的,那么这就意味着你可以在其中放置任意合法的 Python 表达式,比如:

  • 运算表达式

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

  • 调用函数

还可以调用函数:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

也可以直接调用内置函数:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

  • 在类中使用

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

  • 多行 f-string

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

这里需要注意,每行都要加上 f 前缀,否则格式化会不起作用:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

4 速度对比

其实,f-string 里的 f 也许可以代表 fast,它比 %格式化方法和 str.format() 都要快:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

运行结果:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

很明显,f-string 是最快的,并且语法是最简洁的,是不是迫不及待地要试试了?

5 注意事项

5.1 引号的处理

可以在字符串中使用各种引号,只要保证和外部的引号不重复即可。

以下使用方式都是没问题的:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

那如果字符串内部的引号和外部的引号相同时呢?那就需要 进行转义:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

5.2 括号的处理

若字符串中包含括号 {},那么你就需要用双括号包裹它:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

可以看出,使用三个括号包裹效果一样。

当然,你可以继续增加括号数目,看下有什么其他效果:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

额,那么多括号,看着有点晕了…

5.3 反斜杠

上面说了,可以用反斜杠进行转义字符,但是不能在 f-string 表达式中使用:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

你可以先在变量里处理好待转义的字符,然后在表达式中引用变量:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

5.4 注释符号

不能在表达式中出现 #,否则会报出异常;

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

总结

经过以上的讲解,是不是发现 f-string 非常简洁实用、可读性高,并且不容易出错,大家可以尝试切换到 f-string 哦

f-string 也体现出了 Python 的奥义:

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

在Python如今的版本中,你居然不会f-strings字符串格式化方法?

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python字符串格式化是通过将变量的值插入到字符串来创建新字符串的过程。以下是几种常见的字符串格式化方法: 1. 使用占位符 在字符串使用占位符(例如%s和%d)来表示变量的值,然后通过字符串的format()方法将这些占位符替换为实际的值。例如: ``` name = "Alice" age = 30 print("My name is %s and I am %d years old." % (name, age)) ``` 输出结果为: My name is Alice and I am 30 years old. 2. 使用f-strings f-strings是Python 3.6及更高版本引入的一种格式化字符串方法。它们允许在字符串嵌入表达式,并在字符串使用大括号{}表示变量的值。例如: ``` name = "Alice" age = 30 print(f"My name is {name} and I am {age} years old.") ``` 输出结果为: My name is Alice and I am 30 years old. 3. 使用format()方法 format()方法可以接受任意数量的参数,并使用花括号{}来表示变量的值。例如: ``` name = "Alice" age = 30 print("My name is {} and I am {} years old.".format(name, age)) ``` 输出结果为: My name is Alice and I am 30 years old. 4. 使用模板字符串 模板字符串是一种包含占位符的字符串,可以使用字符串模板库(Template)的substitute()方法将占位符替换为实际的值。例如: ``` from string import Template name = "Alice" age = 30 template = Template("My name is $name and I am $age years old.") print(template.substitute(name=name, age=age)) ``` 输出结果为: My name is Alice and I am 30 years old.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值