PyCharm调试器在不可达的match-case语句断点处意外停顿
PyCharm调试match-case语句时的断点异常问题
环境信息
- 系统:macOS Monterey 12.6.1
- PyCharm版本:Build #PY-222.4345.23
- 问题复现Python版本:3.10、3.11
问题代码
def example(i): match i % 4: case 0: if i > 10: return 0 case 1: if i > 10: return 1 case 2: if i > 10: print(f'{i}, {i > 10}') return 2 case 3: if i > 10: return 3 if __name__ == '__main__': print(example(2))
调试异常现象
调用example(2)时,逻辑上case 2分支里的return 2语句因i>10不成立本应不可达,但调试器会意外停在该return语句上,不过程序实际并未返回值(符合输入2时的预期行为)。
- Python 3.11:仅需在该return语句处设置1个断点即可复现

- Python 3.10:需在该return语句及上方的print语句处设置2个断点即可复现

对比验证
将match-case语句替换为if/elif块后,相同断点从未被触发,符合预期的调试行为:
def example(i): j = i % 4 if j == 0: if i > 10: return 0 elif j == 1: if i > 10: return 1 elif j == 2: if i > 10: print(f'{i}, {i > 10}') return 2 elif j == 3: if i > 10: return 3 if __name__ == '__main__': print(example(2))
内容的提问来源于stack exchange,提问作者watch-this
相关产品推荐
相关产品推荐

