PyCharm在不应该出现的断点处停止

hmtdttj4  于 2022-11-08  发布在  PyCharm
关注(0)|答案(1)|浏览(226)

我在macOS Monterey 12.6.1上的PyCharm Build #PY-222.4345.23中遇到了这种情况,在python 3.103.11中都发生了这种情况。

  1. def example(i):
  2. match i % 4:
  3. case 0:
  4. if i > 10:
  5. return 0
  6. case 1:
  7. if i > 10:
  8. return 1
  9. case 2:
  10. if i > 10:
  11. print(f'{i}, {i > 10}')
  12. return 2
  13. case 3:
  14. if i > 10:
  15. return 3
  16. if __name__ == '__main__':
  17. print(example(2))

在两个python版本中,调试器都在第三个return语句处停止(意外,块应该是不可访问的),但实际上并没有返回任何东西,这是给定输入2的预期行为
python 3.11(要重现的1个断点)

python 3.10(要重现的2个断点)

如果switch和case被替换为if/elif块,则永远不会到达完全相同的断点,这正是我对switch块所期望的行为。

  1. def example(i):
  2. j = i % 4
  3. if j == 0:
  4. if i > 10:
  5. return 0
  6. elif j == 1:
  7. if i > 10:
  8. return 1
  9. elif j == 2:
  10. if i > 10:
  11. print(f'{i}, {i > 10}')
  12. return 2
  13. elif j == 3:
  14. if i > 10:
  15. return 3
  16. if __name__ == '__main__':
  17. print(example(2))

相关问题