一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情。
0 环境
- 编辑器:idea
- 系统版本:win10
- python版本:3.9.6
1 format方法
相对于之前学的百分号大法,相对繁琐,需要%xx, % (xxx),替换值前需要加%。这不format方法出现了,更加的方便,只需要使用大括号({})作为占位符。当我们使用到format方法时,format传参会自动替换大括号,你可能会说,format(替换值)和之前(%xx, % xxx)比起来,也没少写多少嘛,确实。
我们看下图里1的代码,单个入参,替换成功,且不改变原先字符串,只返回值和c-print类似。多个入参呢,看2里面的代码,和之前的类似,2个{},对应2个替换值。假如你想format替换值的顺序,可以自定义,只需要给每个{}里加个数字,然后format从0开始,排序替换值。但是一旦替换的个数多了,也会容易混乱。
def format_demo():
s = "are you {}"
print(s.format("ok"))
print("s ==>", s)
s = "are you {}, your are {}"
print(s.format("ok", "man"))
s = "Tools we are {1}, Man teaching {0} Hrs"
print(s.format(7, "man"))
参数个数多了,还想自定义,并且不容易混乱,可以给每个括号加标识(关键字),比如自己定义关键字。{关键字}, format(关键字=替换值),format方法入参可以无视前后位置了。
最有意思的是,可以位置和关键字一起使用。注意:位置在前,关键字在后,不遵守就会报错。还有一种报错就是,占位符和参数不匹配也会报错。
2 f-string
f-string 从3.6开始的增加的。它很适合拼接字符串。这样拼接是不是比上面的format更加的舒服,f'{变量名}...',是不是很适合,变更url,比如拼接数据库url,用它是不是会很合适。
def f_str_demo():
name = 'zhangsan'
age = 1000
print(f'my name is {name}, now i am {age} years old')
3 总结
我们学了三种格式化方式,c-print,比如%s,string format方法,f-string,python3.6新特性。 format和c-print的类似,最大的区别在于format可以更换替换值的位置,通过{数字}或{关键字}已经{数字} + {关键字}组合。f-string很适合值的拼接,f'{变量名}..',很方便。