Effective Python系列(1.2):尽量使用f-string替代其它的字符串格式化

部署运行你感兴趣的模型镜像

在 Python 语言当中,格式化字符串的常用方法有以下几种:

  1. % 格式化,类似于 C 语言当中的格式化方法。
  2. str.format() 方法。
  3. f-string 格式化字符串字面量。

下面先来回顾这几种常用方法的用法。

1.1 % 格式化

示例:


name = "Alice"
age = 30
greeting = "Hello, %s! You are %d years old." % (name, age)
print(greeting)

此种方法的缺点:

  1. %右侧那个元组里面的值在类型或顺序发生变化时,那么程序可能会因为转换类型时发生
    不兼容问题而出现错误。

    key = 'var'
    value = 1.234
    formatted = '%-10s = %.2f' % (key, value)
    print(formatted)
    
  2. 在填充格式化字符串模板之前,经常需要对填进去的值做一些处理,但这样一来,
    整个表达式就会变得很长,难以阅读。

    pantry = {("apple", 8), ("orange", 10), ("banana", 3)}
    for i, (item, count) in enumerate(pantry):
        print("#%d: %-10s = %d" % (i+1, item, round(count)))
    
    
  3. 如果想用同一个值来填充格式字符串里的多个位置,那么必须在%操作符右侧的元组中相应地多次重复该值。

    template = '%s loves food. See %s cook.'
    name = 'Max'
    formatted = template % (name, name)
    print(formatted)
    
  4. dict写到格式化表达式里面会让代码变多。每个键都至少要写两次:
    一次是在格式说明符中,还有一次是在字典中作为键。
    另外,定义字典的时候,可能还要专门用一个变量来表示这个键所对应的值,
    而且这个变量的名称或许也和键名相同,这样算下来就是三次了。

    soup = 'lentil'
    formatted = 'Today\'s soup is %(soup)s.' % {'soup': soup}
    print(formatted)
    

1.2 str.format()方法

str.format() 是 Python 2.7 和 3.0 引入的格式化方法,它更强大和灵活,支持位置参数、关键字参数等。

  1. 使用位置参数
greeting = "Hello, {0}! You are {1} years old.".format(name, age) 
print(greeting)
  1. 使用关键字参数
greeting = "Hello, {name}! You are {age} years old.".format(name="Charlie", age=28)
print(greeting)

# 输出
# Hello, Charlie! You are 28 years old.
  1. 格式化数值
pi = 3.14159
formatted = "Pi is approximately {:.2f}".format(pi)  # 保留两位小数
print(formatted)
# 输出:Pi is approximately 3.14

str.format() 无法解决 C 风格格式化字符串的第二和第四个问题。

1.3 f-string

f-strings 是 Python 3.6 引入的格式化方法,它使得格式化更加简洁和易读。通过在字符串前加上 fF,可以直接在字符串中嵌入表达式。

  1. 语法:
f"格式字符串 {表达式}"

示例:

name = "Eve"
age = 35
greeting = f"Hello, {name}! You are {age} years old."
print(greeting)

输出:

Hello, Eve! You are 35 years old.
  1. 支持复杂表达式:
a = 5
b = 3
result = f"The sum of {a} and {b} is {a + b}."
print(result)

输出:

The sum of 5 and 3 is 8.
  1. 格式化数值:
pi = 3.14159
formatted = f"Pi is approximately {pi:.2f}"  # 保留两位小数
print(formatted)

输出:

Pi is approximately 3.14

建议:在 Python 程序当中,尽量使用 f-string 格式化字符串。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值