

终究还是错付了!这2种Python字符串格式化的写法已经被淘汰了,你是不是还在用?
source link: https://blog.51cto.com/u_15493782/5580972
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.


大家好,这里是程序员晚枫,知识星球:Python读者圈。
今天我们来讨论一个问题:python里是如何格式化字符串的?实际工作中使用的是哪一种?
一、3种方式
- format格式化(python2.6新增)
- 不好用,处于淘汰的边缘。
- f-string格式化(python3.6新增)
- 目前最常用
举个例子,现在需要打印:你好,我是”晚枫“。
以上3种用法的代码如下:
# 1、%格式化
name = '晚枫'
sentence = '你好,我是%s' % (name)
# sentence = 你好,我是晚枫
# 2、format格式化(python2.6新增)
name = '晚枫'
sentence = '你好,我是{}'.format(name)
# sentence = 你好,我是晚枫
# 3、f-string格式化(python3.6新增)
name = '晚枫'
sentence = f'你好,我是{name}'
# sentence = 你好,我是晚枫
乍一看,看不出这几种方式的区别,接下来我们通过例子,详细看一下它们的优缺点。
二、为什么第3种最流行?
按照时间顺序,每一种新方式的推出,都是对上一种的改进。这3种表达方式,分别改进了上一种的什么不足呢?
原理层面的我们只说一种:每一种的代码运行速度,都比上一种的快。如果想详细了解它们是如何提高性能的,欢迎留言讨论~
这里我们主要说一下用法上的改进:
这种表达方式,当变量较多时,很容易混淆,假如我们想写一句:你好,我是晚枫
,今年18岁零48个月
,是个程序员
,喜欢点赞的人
。
使用这种方式,你将陷入百分号(%)的地狱,稍有不慎就会漏写一个,导致程序崩溃。
sname = '晚枫'
age = '18岁零48个月'
job = '程序员'
hobby = '点赞的人'
sentence = '你好,我是%s,今年%s,是个%s,喜欢%s。' % (name, age, job, hobby)
format格式化
所以,为了改进上面的问题,python2.6新增了format方法。
同样的例子,使用format方法是下面这样的:
sname = '晚枫'
age = '18岁零48个月'
job = '程序员'
hobby = '点赞的人'
sentence = '你好,我是{},今年{},是个{},喜欢{}。'.format(name, age, job, hobby)
# 你还可以这样写
sentence = '你好,我是{name},今年{age},是个{job},喜欢{hobby}。'.format(name, age, job, hobby)
去掉了原有的%,取而代之的是{},甚至还可以把变量名称写进—{}里面进行识别。
虽然比原来的%要清爽一些,但format后面还是要把一大串变量名称重复写一遍,是不是依然很麻烦?
f-string格式化
于是,python3.6新增了目前最常用的这种格式化方法,直接上代码。
sname = '晚枫'
age = '18岁零48个月'
job = '程序员'
hobby = '点赞的人'
sentence = '你好,我是{},今年{},是个{},喜欢{}。'.format(name, age, job, hobby)
# 你还可以这样写
sentence = f'你好,我是{name},今年{age},是个{job},喜欢{hobby}。
发现了吗?你只需要在格式化的字符串前面加上一个小写字母:f,这段字符串就可以自动格式化了,既没有%的冗余,也没有format对变量名的重复书写。
3、写在最后
每次新的python版本开始研发之时,程序员都会高度关注新版本有哪些新特点。为什么?
原因无它,python一直在进步,看着自己工作的工具变得越来越高级,生产效率越来越高,也是一种乐趣吧。
据说python3.11的速度将提高2倍,我是相当期待了: Python 3.11 ,更快更高更强!
Recommend
-
51
-
34
在一些金融类的 App 中,对于表示金额类的字符串,通常需要进行格式化后再显示出来。例如: 0 –> 0.00 123 –> 123.00
-
31
说来惭愧,用Python这么久了,还没有系统的看过字符串格式化的文档,因为常用的也就 那么几个。这篇文章就总结一下Python的字符串格式化。 format() 方法
-
60
这是在参加百越杯CTF遇到的一道题目,其中涉及到两个python安全相关的知识点,在此做一个总结。 flask session问题 由于 flask 是非常轻量级的 Web框架 ,其 ...
-
41
一年光景,我们见证了这个行业完完全全的逆生长。应用——公链——交易所——挖矿&比特币,区块链步步“脱实向虚”,寻着它生长出来的路线,回到“母体”。
-
43
-
203
前言 春风化雨,万物复苏,编程始于 Hello world ,C 语言的 Hello world 可如下,同样 C++ 亦可如下: #include <stdio.h> int main() { printf("Hello World!"); return 0; }...
-
8
目录 1. C风格的字符串格式化方式
-
5
Python格式化字符串的几种方法 %操作符(已经落伍了) 最原始的方式应该就是用 % 操作符了. % 操作符可以按位置替换格式化符的值: name = "earth" return "hello %s" % n...
-
2
在Python中总共有两种字符串格式化方案,一种是在Python 2.6之前就有的%运算符,另外一个是的从Python 2.6开始新增的一种格式化字符串函数str.format()。 %格式化工具 熟悉C语言 printf() 函数的同学会很容易学会%格式化工具。print() 函数使用...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK