我在 PyCharm 中遇到这种行为 Build #PY-222.4345.23
在 macOS 蒙特利 12.6.1
,这发生在 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))
在两个 python 版本中,调试器都会在第三个返回语句处停止(意外, block 应该无法访问),但实际上不会返回任何给定输入的预期行为 2
python 3.11(1 个断点来重现)
python 3.10(要重现的 2 个断点)
如果开关和外壳更换为if
/elif
block ,永远不会达到相同的断点,这正是我期望的 switch block 的行为。
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))
最佳答案
IDE 错误。我已在 PyCharm 的问题跟踪器中提交了一张票证 - https://youtrack.jetbrains.com/issue/PY-57125/PyCharm-stops-on-non-hit-breakpoint-inside-pattern-matching-block
关于python - PyCharm 在不应该的断点处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74261550/