原文: Python f-String Tutorial – String Formatting in Python Explained with Code Examples
当你在 Python 中格式化字符串时,你可能习惯于使用 format()
方法。
但在 Python 3.6 和更高版本中,你可以使用 f-string 来代替。f-string,也被称为格式化字符串常量,有一个更简洁的语法,在字符串格式化中可以起到很大的作用。
在本教程中,你将了解 Python 中的 f-string,以及你可以用它们来格式化字符串的几种不同方法。
Python 中的 f-string 是什么?
Python 中的字符串通常被括在双引号(""
)或单引号(''
)内。要创建 f-string,你只需要在字符串的开头引号前添加一个 f
或 F
。
例如,"This"
是一个字符串,而f"This"
是一个 f-string。
如何使用 Python f-string 打印变量
当使用 f-string 来显示变量时,你只需要在一组大括号 {}
内指定变量的名字。而在运行时,所有的变量名都会被替换成它们各自的值。
如果你在字符串中有多个变量,你需要把每个变量的名字都放在一组大括号里。
语法如下所示:
f"This is an f-string {var_name} and {var_name}."
▶ 这里有一个示例。
你有两个变量,language
和 school
,用大括号括起来,在 f-string 里面。
language = "Python"
school = "freeCodeCamp"
print(f"I'm learning {language} from {school}.")
让我们看看输出:
#Output
I'm learning Python from freeCodeCamp.
注意变量 language
和 school
分别被替换成了 Python
和 freeCodeCamp
。
如何用 Python f-string 来评估表达式
由于 f-string 是在运行时评估的,所以你也可以在运行时评估有效的 Python 表达式。
▶ 在下面的例子中,num1
和 num2
是两个变量。为了计算它们的乘积,你可以在一组大括号内插入表达式 num1*num2
。
num1 = 83
num2 = 9
print(f"The product of {num1} and {num2} is {num1 * num2}.")
注意输出中 num1 * num2
如何被替换成 num1
和 num2
的乘积。
#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>
是condition
为True
时要执行的语句,而<false_block>
是条件为False
时要执行的语句。
如果你以前没有见过这种语法,可能看起来有点不同。你可以把它理解为:“if
condition
是 True
,执行这个;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()
方法进行字符串格式化。