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

Python match/case定义sleep_in函数报第2行语法错误排查

问题背景

我想要定义一个名为sleep_in(weekday, vacation)的函数,规则如下:

  • 参数weekday:当日为工作日时取值为True,非工作日时取值为False
  • 参数vacation:处于休假状态时取值为True,未休假时取值为False
  • 返回规则:非工作日或正在休假时可以睡懒觉,函数返回True;工作日且未休假时返回False

函数预期输入输出如下:

sleep_in(False, False) → True  
sleep_in(True, False) → False  
sleep_in(False, True) → True  
sleep_in(True, True) → True  
问题表现

编写的实现代码如下:

def sleep_in(weekday, vacation):
  match (weekday, vacation):
    case (False, False):
     return True
    case (True, False):
     return False
    case (False, True):
     return True
    case (True, True):
     return True  

在Jupyter Notebook中运行代码时,抛出如下报错:

invalid syntax (line 2)
报错原因

报错根源是Python版本不支持match...case语法:
match...case结构化模式匹配是Python 3.10版本才正式上线的语法特性,如果你当前Jupyter Notebook绑定的Python内核版本是3.9及更早版本,解释器无法识别match关键字,就会在match所在的第二行抛出语法错误。

修复方案

你可以二选一:

  • 方案1:升级Jupyter使用的Python内核到3.10及以上版本,原有代码无需修改即可正常运行。
  • 方案2:改用低版本Python兼容的写法,逻辑更简洁,推荐使用:
def sleep_in(weekday, vacation):
    return not weekday or vacation

如果习惯写分支判断,也可以用通用的if语句实现,兼容所有Python3版本:

def sleep_in(weekday, vacation):
    if weekday and not vacation:
        return False
    return True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:12:21