原文: https://www.freecodecamp.org/news/python-f-strings-tutorial-how-to-use-f-strings-for-string-formatting/

当你在 Python 中格式化字符串时,你可能习惯于使用 format() 方法。

但在 Python 3.6 和更高版本中,你可以使用 f-string 来代替。f-string,也被称为格式化字符串常量,有一个更简洁的语法,在字符串格式化中可以起到很大的作用。

在本教程中,你将了解 Python 中的 f-string,以及你可以用它们来格式化字符串的几种不同方法。

Python 中的 f-string 是什么?

Python 中的字符串通常被括在双引号("")或单引号('')内。要创建 f-string,你只需要在字符串的开头引号前添加一个 fF

例如,"This" 是一个字符串,而 f"This" 是一个 f-string。

如何使用 Python f-string 打印变量

当使用 f-string 来显示变量时,你只需要在一组大括号 {} 内指定变量的名字。而在运行时,所有的变量名都会被替换成它们各自的值。

如果你在字符串中有多个变量,你需要把每个变量的名字都放在一组大括号里。

语法如下所示:

f"This is an f-string {var_name} and {var_name}."

▶ 这里有一个示例。

你有两个变量,languageschool,用大括号括起来,在 f-string 里面。

language = "Python"
school = "freeCodeCamp"
print(f"I'm learning {language} from {school}.")

让我们看看输出:

#Output
I'm learning Python from freeCodeCamp.

注意变量 languageschool 分别被替换成了 PythonfreeCodeCamp

如何用 Python f-string 来评估表达式

由于 f-string 是在运行时评估的,所以你也可以在运行时评估有效的 Python 表达式。

▶ 在下面的例子中,num1num2 是两个变量。为了计算它们的乘积,你可以在一组大括号内插入表达式 num1*num2

num1 = 83
num2 = 9
print(f"The product of {num1} and {num2} is {num1 * num2}.")

注意输出中 num1 * num2 如何被替换成 num1num2 的乘积。

#Output
The product of 83 and 9 is 747.

我希望你现在能够理解这个模式。

在任何 f-string 中,{var_name}, {expression} 作为变量和表达式的占位符,并在运行时被替换成相应的值。

在下一节中了解更多关于 f-string 的信息。

如何在 Python f-string 中使用条件语句

让我们首先回顾一下 Python 的 if...else 语句。一般的语法如下所示:

if condition:
  # do this if condition is True <true_block>
else:
  # do this if condition is False <false_block>

这里,condition 是表达式,检查其真值。

  • 如果 condition 评估为 True,if 块(<true_block>)中的语句将被执行。
  • 如果 condition 评估为 False,则执行 else 块(<false_block>)中的语句。

对于上述 if...else 块,有更简洁的等价的代码,其语法如下:

<true_block> if <condition> else <false_block>
在上面的语法中,<true block>conditionTrue 时要执行的语句,而 <false_block> 是条件为 False 时要执行的语句。

如果你以前没有见过这种语法,可能看起来有点不同。你可以把它理解为:“if conditionTrue,执行这个;else,做这个”。

这在 Python 中通常被称为三元运算符,因为它在某种意义上需要 3 个操作数——true 代码块、被测条件 condition 和 false 代码块。

▶ 让我们举一个使用三元运算符的简单例子。

给定一个数字 num,你想检查它是否是偶数。你知道,如果一个数字能被 2 整除,那么它就是偶数。

num = 87;
print(f"Is num even? {True if num%2==0 else False}")

在上面的代码片段中,

  • num%2==0 是条件。
  • 如果条件为 True,你只需返回 True 表示 num 确实是偶数,否则为 False
#输出
Is num even? False

在上面的例子中,num 是 87,这是个奇数。因此,f-string 中的条件语句被替换为 False

如何用 Python f-string 调用方法

到目前为止,你只看到了如何打印变量的值、评估表达式,以及在 f-string 中使用条件语句。而现在是时候提升水平了。

▶ 让我们看看下面的例子:

author = "jane smith"
print(f"This is a book by {author}.")

上述代码打印出 This is a book by jane smith.

如果打印出 This is a book by Jane Smith.,不是更好吗?是的,在 Python 中,字符串方法返回有必要修改的字符串。

Python 中的 title() 方法返回一个新的字符串,它以标题的大小写规范格式——通常名字的格式(First_name Last_name)。

要打印出以标题大小写规范格式的作者姓名,你可以做以下工作:

  • 对字符串 author 使用 title() 方法
  • 将返回的字符串存储在另一个变量中,并
  • 使用 f-string 打印它,如下所示:
author = "jane smith"
a_name = author.title()
print(f"This is a book by {a_name}.")

#输出
This is a book by Jane Smith.

然而,你只需用 f-string 一步就可以做到这一点。你只需要在 f-string 中的大括号内的字符串 author 上调用 title() 方法。

author = "jane smith"
print(f"This is a book by {author.title()}.")

当 f-string 在运行时被解析时,

  • 在字符串 author 上调用 title() 方法,并且
  • 返回的字符串以标题大小写格式被打印出来。

你可以在下面显示的输出中验证这一点。

#输出
This is a book by Jane Smith.

你可以对大括号内任何有效的 Python 对象调用方法,它们会正常工作。

如何在 Python f-string 中调用函数

除了在 Python 对象上调用方法之外,你还可以在 f-string 中调用函数。它的工作原理与你之前看到的非常相似。

就像变量名被值所替代,表达式被评估结果所替代一样,函数调用被函数的返回值所替代。

▶ 让我们看看下面的函数 choice()

def choice(c):
  if c%2 ==0:
    return "Learn Python!"
  else:
    return "Learn JavaScript!"

如果调用的参数是偶数,上述函数返回 "Learn Python!"。而当函数调用中的参数为奇数时,它返回 "Learn JavaScript!"

▶ 在下面的例子中,你有一个 f-string,在大括号内有一个对 choice 函数的调用。

print(f"Hello Python, tell me what I should learn. {choice(3)}")

由于参数是一个奇数(3),Python 建议你学习 JavaScript,如下所示:

#输出
Hello Python, tell me what I should learn. Learn JavaScript!

如果你用偶数调用函数`choice(`,你会看到 Python 告诉你要改学 Python。🙂

print(f"Hello Python, tell me what I should learn. {choice(10)}")
#输出
Hello Python, tell me what I should learn. Learn Python!

我们的教程就这样在愉快的气氛中结束了!

总结

在本教程中,你已经学会了如何使用 f-strings 来:

  • 打印变量的值
  • 评估表达式
  • 在其它 Python 对象上调用方法,以及
  • 对 Python 函数进行调用

相关文章

这是 Jessica 的一篇文章,解释了使用 format() 方法进行字符串格式化。