目录
# 1. 引言
官方建议,格式化字符串时使用"format"代替使用"%",因为可读性更强;但是为了读懂源码,我们需要两者都学会才行
# 2. %s
一般为 2 种形式,第一种多个格式化字符串需要传值的时候是按照前后顺序来传值的,这就带来一个问题:数量多了以后,很难清楚哪一个占位符对应哪一个实参.
因此参数较多的情况下,我们用字典赋值,%(name)s 对应 {"name":"LIUYU"}.
但是此种形式,需要先验知识背书,即你知道%s这个奇形怪状的东西是什么,可读性也不是很好,于是有了str.format().
# 3. str.format()
print("hello.My name is {name}, I'm from {nationality}".format(name='LIUYU',nationality='China'))
可以说,str.format() 是Python最为推荐的字符串格式化方法
## 3.1 位置参数
print("{},{}".format('LIUYU','China'))
print("{1},{0},{1}".format('LIUYU','China'))
li = ['LIUYU','China']
print("{},{}".format(*li))
LIUYU,China
China,LIUYU,China
LIUYU,China
注意,传入列表是用*,若是不用*,则会把li当成一个列表去处理,即0表示li是format里的下标为0的参数,而这个参数是个列表,可以[0],尊重数据结构了属于是.
print('name is {0[0]} age is {0[1]}').format(li)
# output: name is LIUYU age is 20
## 3.2 关键字参数
print("hello.My name is {name}, I'm from {nationality}".format(name='LIUYU',nationality='China'))
dict = {'name':'LIUYU','nationality':'China'}
print("{name},{nationality}".format(**dict))
注意,传入字典是用**,如果不用的话,应该也要尊重一波数据结构:
dict = {'name':'LIUYU','nationality':'China'}
print("{0[name]},{0[nationality]}".format(dict))
# output: LIUYU,China
## 3.3 通过对象
class Person:
def __init__(self, name, age):
self.name, self.age = name, age
def __str__(self):
return 'This guy is {self.name},who is {self.age} years old.'.format(self=self)
print(Person('LIUYU', 20))
# output: This guy is LIUYU,who is 20 years old.
参考文章
- Python模块的使用-- pymysql通过字典插入数据_范翻番樊的博客-CSDN博客
- Python 函数参数前面一个星号(*)和两个星号(**)的区别 | 菜鸟教程
- Python3 MySQL 数据库连接 – PyMySQL 驱动 | 菜鸟教程
- python中将字典作为参数传入函数_single-tracking的博客-CSDN博客_python传入字典参数