Python入门教程第77篇 格式化字符串F-strings
Posted 不剪发的Tony老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门教程第77篇 格式化字符串F-strings相关的知识,希望对你有一定的参考价值。
本篇将会介绍 Python F-strings 的概念,以及如何利用格式化字符串提高代码的可读性。
F-strings
Python 3.6 引入了 f-strings,可以更加快速简洁地格式化字符串。f-strings 提供了一种在字符串中嵌入表达式的方法,语法比 format() 方法更加清晰。
例如:
name = 'John'
s = f'Hello, name!'
print(s)
输出结果如下:
Hello, John!
代码的执行过程如下:
- 首先,定义一个变量 name,变量的值为“John”。
- 然后,将变量名嵌入字符串中的大括号之中。字符串前面的字母 f 表示它是一个 f-string,也可以使用大写的字母 F。
- 最后,打印字符串 s。
Python 在运行时对 f-string 中的表达式进行求值,并使用它们的值替换表达式。
示例
以下示例使用 upper() 函数将一个 f-string 中的 name 转化为大写形式:
name = 'John'
s = F'Hello, name.upper()!'
print(s)
输出结果如下:
Hello, JOHN!
以下示例在 f-string 中使用了多个大括号:
first_name = 'John'
last_name = 'Doe'
s = F'Hello, first_name last_name!'
print(s)
输出结果如下:
Hello, John Doe!
以下示例使用 join() 方法实现了相同的功能:
first_name = 'John'
last_name = 'Doe'
s = F'Hello, " ".join((first_name, last_name))!'
print(s)
多行 F-strings
Python 支持多行 f-strings,每一行字符串之前都需要加上一个字母 f。例如:
name = 'John'
website = 'python.org'
message = (
f'Hello name. '
f"You're learning Python on website."
)
print(message)
输出结果如下:
Hello John. You're learning Python on python.org.
如果单个 f-string 跨越多行,可以使用反斜线对回车符进行转移,例如:
name = 'John'
website = 'python.org'
message = f'Hello name. ' \\
f"You're learning Python at website."
print(message)
输出结果如下:
Hello John. You're learning Python on python.org.
以下示例使用三重双引号实现多行 f-string:
name = 'John'
website = 'python.org'
message = f"""Hello name.
You're learning Python at website."""
print(message)
输出结果如下:
Hello John.
You're learning Python at python.org.
大括号
在执行 f-string 时,Python 会将双重大括号替换为单个大括号。不过,双重大括号并不意味着表达式的开始。因此,Python 不会计算双重大括号中的表达式。例如:
s = f'1+2'
print(s)
输出结果如下:
1+2
以下示例使用了三重大括号:
s = f'1+2'
print(s)
输出结果如下:
3
此时,Python 将 1+2 作为表达式进行计算,返回了 3。另外,它还将剩下的双重大括号替换为单个大括号。
如果想要在结果中增加更多的大括号,我们可以在 f-strings 中继续增加大括号:
s = f'1+2'
print(s)
输出结果如下:
1+2
表达式求值顺序
Python 按照从左至右的顺序计算 f-string 中的表达式。如果表达式存在副作用,可以明显看出这个计算顺序。例如:
def inc(numbers, value):
numbers[0] += value
return numbers[0]
numbers = [0]
s = f'inc(numbers,1),inc(numbers,2)'
print(s)
输出结果如下:
1,3
其中,下面的函数调用会将列表 numbers 中的第一个数字加 1:
inc(numbers,1)
此时,numbers[0] 的结果为 1。然后第二次函数调用会将列表 numbers 中的第一个数字加 2,最终结果为 3。
数字格式化
如果想要格式化 f-string 中的数字,可以使用以下简单语法:
[number]:[.precision][type]
例如:
previous = 99.2
current = 110.3
vs_previous = (current - previous) / previous
print(f'Current vs. previous year: vs_previous:.2%')
输出结果如下:
Current vs. previous year: 11.19%
对于以下代码:
vs_previous:.2%
vs_previous 是需要格式化的数字,.2% 表示保留小数点后两位并且使用百分号的形式显示结果。
更多复杂的格式化规则可以参考官方文档。
总结
- Python f-strings 提供了一种格式化字符串的简洁方式。
- Python 在运行时替换 f-strings 大括号中的表达式结果。
以上是关于Python入门教程第77篇 格式化字符串F-strings的主要内容,如果未能解决你的问题,请参考以下文章