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'是一个字符串表达式,不符合语法要求,所以触发了报错。
代码里的其他小问题
- 你最后打印的是
orders,这是在打印函数对象本身,而不是调用函数后得到的订单字典; - 函数内部的循环完全冗余——
**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
相关产品推荐
相关产品推荐

