Python f-String教程--Python中的字符串格式化及代码实例讲解

144 阅读6分钟

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

但在 Python 3.6 及以后的版本中,你可以使用f- 字符串来代替。f-字符串,也被称为*格式化字符串字面,*有一个更简洁的语法,在字符串格式化中可能会有很大帮助。

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

什么是 Python 中的 f-字符串?

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

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

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

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

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

语法如下所示:

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-Strings 评估表达式

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

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

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

注意在输出中,num1 * num2num1num2 的乘积所取代:

#Output
The product of 83 and 9 is 747.

我希望你现在能够看到这个模式。

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

到下一节去学习更多关于f-字符串的知识。

如何在 Python f-字符串中使用条件语句

让我们首先回顾一下 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 conditionTrueelse这样做"。

这在Python中通常被称为三元运算符,因为它在某种意义上需要3个操作数--真块、被测条件假块

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

给定一个数字num ,你想检查它是否是偶数。你知道,如果一个数字能被2偶数整除,它就是偶数。让我们用这个来写我们的表达式,如下所示:

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

在上面的代码片断中:

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

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

如何用 Python f-字符串调用方法

到目前为止,你只看到了如何打印变量的值,评估表达式,以及在 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}.")

#Output
This is a book by Jane Smith.

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

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

当f-String在运行时被解析时:

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

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

#Output
This is a book by Jane Smith.

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

如何在 Python f-字符串中调用函数

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

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

▶让我们以下面所示的函数choice() :

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

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

▶在下图所示的例子中,你有一个f-String,在大括号内有一个对选择函数的调用:

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

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

#Output
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)}")
#Output
Hello Python, tell me what I should learn. Learn Python!

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

总结

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

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

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