为什么我们需要在 python 中的 f 字符串周围加上撇号?

Why do we need to put apostrophes around an f string in python?

我了解什么是 f 字符串以及如何使用它们,但我不明白为什么我们已经将变量设为字符串时还需要在整个 f 字符串周围加上撇号。

first_name = 'Chris'
last_name = 'Christie'

sentence = f'That is {first_name} {last_name}'

我明白预期的结果是什么。但这就是我感到困惑的地方。变量 first name 和 last name 不是已经是字符串了吗?那么当我们将它放入 f 字符串语句时,我们不是将两个字符串(变量名和姓)放在一个大字符串中(因为整个 f 字符串语句被撇号包围)?对不起,如果这令人困惑

aren't we putting two strings (the variables first name and last name) inside one big string

是的。在这个例子中,这不是一件难事。按照你的建议,你可以这样做:

first_name = 'Chris'
last_name = 'Christie'

sentence = 'That is ' + first_name + ' ' + last_name

连接字符串。但这很快就会变得笨拙。由于所有这些引号和运算符,很难一眼看出最终字符串的确切外观。

很多语言都想出了一种方法,让变量成为字符串本身的一部分。这样您就可以更自然地编写字符串。例如,在 Python 你也可以使用 "%-formatting":

sentence = 'That is %s %s' % (first_name, last_name)

这样好多了,因为您可以轻松地看到变量在字符串中的位置。但是当你有很多替换要做时它会变得混乱,因为你需要将 % 的顺序与列表的顺序相匹配。如果我们可以将变量放在字符串本身中会怎么样?嗯,这就是 f-strings 的作用。

所以 f-strings 允许您查看变量将在字符串中结束的位置。正如您所指出的,符号看起来有点奇怪,因为您最终将字符串作为变量插入到字符串中,但符号就是符号。你会以一些模糊为代价获得一些表现力。

不要对撇号感到困惑:

  • 我们使用撇号来定义 Python 中的字符串:

    name = "Chris"
    
  • 我们使用 f-Strings,因为它是格式化 Python:

    字符串的新改进方法
    # Define two strings
    name = "Chris"
    surname = "Christie"
    
    # Use f-Strings to format the overall sentence
    sentence = f"Hello, {name} {surname}"
    
    # Print the computed sentence 
    print(sentence)
    

    输出:'Hello, Chris Christie'