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

Python3函数调用报错SyntaxError: keyword can't be an expression求助

修正你的三明治订单函数并解释语法错误

别担心,这个语法错误是新手常踩的坑,咱们一步步拆解问题并修正:

核心错误原因:SyntaxError: keyword can't be an expression

你调用函数时写了orders('cheese'='extra','toppings'='mushroom'),这里的问题在于Python不允许把带引号的字符串作为关键字参数的名称。关键字参数的规则是:等号左边必须是合法的Python标识符(简单说就是不用加引号的变量名格式,比如cheese、toppings这种),你写的'cheese'是一个字符串表达式,不符合语法要求,所以触发了报错。

代码里的其他小问题

  1. 你最后打印的是orders,这是在打印函数对象本身,而不是调用函数后得到的订单字典;
  2. 函数内部的循环完全冗余——**sandwich参数会自动把你传入的关键字参数打包成一个字典,没必要再创建新字典复制一遍。

修正后的完整代码

def orders(**sandwich):
    # **sandwich 本身就是存储所有参数的字典,直接返回即可
    return sandwich

# 调用时直接用 键=值 的形式,键不需要加引号
my_order = orders(cheese='extra', toppings='mushroom')
# 打印函数返回的字典结果
print(my_order)

运行这段代码会输出:{'cheese': 'extra', 'toppings': 'mushroom'},完全符合你的需求。

额外补充:如果需要用特殊字符串作为键怎么办?

如果你的键需要包含特殊字符(比如'extra-cheese'),那可以不用**kwargs,直接传入一个字典作为参数:

def orders(sandwich):
    return sandwich

my_order = orders({'extra-cheese': 'yes', 'toppings': 'mushroom'})
print(my_order)

这种写法就支持任意字符串作为键啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:11