【问题标题】:How to put string parameters in functions inside f strings?如何将字符串参数放在 f 个字符串内的函数中?
【发布时间】:2022-01-22 10:41:25
【问题描述】:

我有以下 f 字符串:

f"Something{function(parameter)}"

我想硬编码那个参数,它是一个字符串:

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

它给了我这个错误:

SyntaxError: f-string: unmatched '('

我该怎么做?

【问题讨论】:

  • 您可以使用第二种引号字符,即f"Something{function('foobar')}"

标签: python f-string


【解决方案1】:

你可以利用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 字符串的工作方式。

【讨论】:

    【解决方案2】:

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

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

    转义引号不是一种选择(出于我目前无法理解的原因),这意味着任意嵌套的表达式不是一种选择。您只能使用 4 种类型的引号:

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

    【讨论】:

    • “转义引号不是一种选择” - 我敢打赌,语言设计者不想处理 f-string 表达式中可能发生的尴尬的转义疯狂,并决定保持简单。
    【解决方案3】:

    Python 允许 "" 和 '' 围绕字符串。最容易使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 2021-10-28
      • 2021-09-20
      • 2018-03-14
      相关资源
      最近更新 更多