You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python F-String Literal调用kwargs报错:语法错误原因排查

F-String语法错误原因解析

先看你提供的代码:

def myfunc (*args, **kwargs):
    print (args)
    print (kwargs)
    print (f'I would like {args[0]} {kwargs['food']}')
    #Example #2 print ('I would like {} {}'.format(args[0], kwargs['food']))

myfunc(10,20,30,fruit = 'orange', food = 'eggs', animal = 'dog')

报错SyntaxError: f-string: unmatched '['的原因很直接:f-string的外层单引号和内部kwargs['food']的单引号发生了冲突。

Python解析f-string时,会把开头的'作为字符串的起始标记,当遇到kwargs['food']里的第一个'时,它会认为这是字符串的结束位置。这样一来,food']}就变成了脱离字符串的代码,其中的[没有对应的闭合结构,所以触发了语法错误。

而注释里的format方法没有这个问题,是因为format的字符串和后面的kwargs['food']是分开的两个部分,不存在引号嵌套冲突。

修正方法有两种:

  1. 把f-string的外层单引号换成双引号,内部保留单引号:
print(f"I would like {args[0]} {kwargs['food']}")
  1. 把内部的单引号换成双引号,外层保留单引号:
print(f'I would like {args[0]} {kwargs["food"]}')

修正后运行代码,就能得到和format方法一样的输出:I would like 10 eggs。

内容的提问来源于stack exchange,提问作者Jorge Gandara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:05:23