如何将字符串参数放入 f 字符串内的函数中?

How to put string parameters in functions inside f strings?

我有以下 f 字符串:

f"Something{function(parameter)}"

我想对该参数进行硬编码,它是一个字符串:

f"Something{function("foobar")}"

它给我这个错误:

SyntaxError: f-string: unmatched '('

我该怎么做?

您可以使用 python 有两种类型的引号:

f"Something{function('foobar')}"

f'Something{function("foobar")}'

不幸的是,您不能做的是转义内部字符串的引号。 f"Something{str.upper(\"foobar\")}" 将导致

SyntaxError: f-string expression part cannot include a backslash

这在 PEP-498 中有具体说明,它定义了 f 弦的工作原理。

因为 f 字符串是由词法分析器而不是解析器识别的,所以不能在字符串中嵌套相同类型的引号。词法分析器只是在寻找下一个 ",而不管它的上下文。在 f"..." 内使用单引号或在 f'...'.

内使用双引号
f"Something{function('foobar')}"
f'Something{function("foobar")}'

转义引号不是一个选项(出于我现在不明白的原因),这意味着任意嵌套的表达式不是一个选项。您只能使用 4 种类型的引号:

  1. "..."
  2. '...'
  3. """..."""
  4. '''...'''

Python 允许在字符串周围使用“”和''。最简单的是使用:

f"Something{function('foobar')}"