方式一: 使用%

这是最原始的字符串格式化方法,在Python 2.6出现之前,字符串迭代只有一种方法,就是%(也是取模)操作符,%操作符支持unicode和str类型的Python字符串,效果和C语言中的sprintf()方法相似

  • 字符串对象具有一个唯一的内置操作:%运算符(模),可以用于格式化操作,具体如下:
    In [1]: print('hello, %s' % 'world')
    hello, world
    In [2]:
  • 如果要在字符串中嵌入多个变量,则变量必须使用元祖包含,具体如下:
    In [2]: name='一叶知秋'
    In [3]: age=25
    In [4]: print('name:%s, age:%s' % (name,age))
    name:一叶知秋, age:25
    In [5]:
  • 存在缺陷
    上面的代码示例看起来还能读,但是,一旦开始使用多个参数和更长的字符串,你的代码将变得不那么容易阅读且冗余,
    In [22]: print('hello,my name is %s,age is %s, job is %s,location is %s' % (name,age,job,location))
    hello,my name is 一叶知秋,age is 25, job is programmer,location is 西安
    In [23]:

方式二:使用str.format()

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

  • 基本语法是通过 {} 和 : 来代替以前的 % 。
    In [9]: print("{:.2f}".format(3.1415926));
    3.14
  • format 函数可以接受不限个参数,位置可以不按顺序。
    #不设置指定位置,按默认顺序
    In [5]: print('{} {}'.format('hello','world'))
    hello world
    # 设置指定位置
    In [6]: print('{1}, {0} {1}'.format('hello','python'))
    python, hello python
    # 使用变量名
    In [8]: print('{name},{age}'.format(name='一叶知秋',age=25))
    一叶知秋,25
  • 存在缺陷
    str.format()虽然比%要好些。但是,在处理多个参数和更长的字符串时仍然可能非常冗长
    In [22]: print('hello,my name is %s,age is %s, job is %s,location is %s' % (name,age,job,location))
    hello,my name is 一叶知秋,age is 25, job is programmer,location is 西安
    In [23]:

方式三:f-Strings

Python 3.6 引入了新的字符串格式化方式,f-strings 也称作“格式化的字符串字面量”,它是一个以 f 或 F 开头的字符串,其中以 {} 包含的表达式会进行值替换

  • f-Strings的使用方法
    In [11]: name='一叶知秋'
    In [11]: age=25
    In [12]: print(f'name:{name}, age:{age}')
    name:一叶知秋, age:25
    In [13]: print(F'name:{name}, age:{age}')
    name:一叶知秋, age:25
  • 运算表达式
    # 因为 f-strings 是在运行时计算的,所以你可以在其中放置任意合法的 Python 表达式,比如:
    In [14]: print(f"{ 2 * 3 + 1}")
    7
  • 函数调用
    In [15]: def test():
    ...: return 'hello world'
    ...:
    In [16]: print(f'{test()}')
    hello world

执行速度对比


from


执行结果如下:


0.0334645
0.04116740000000001
0.023423


总结

很明显,f-string是执行速度最快的,并且语法是最简洁的,所以如果要格式化字符串的话,推荐使用f-Strings格式化字符串,前提是你的python解释器必须是3.6版本以上。