我在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))
在两个python版本中,调试器都在第三个return语句处停止(意外,块应该是不可访问的),但实际上并没有返回任何东西,这是给定输入2
的预期行为
python 3.11(要重现的1个断点)
python 3.10(要重现的2个断点)
如果switch和case被替换为if
/elif
块,则永远不会到达完全相同的断点,这正是我对switch块所期望的行为。
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))
1条答案
按热度按时间bvk5enib1#
IDE错误。我已经在PyCharm的问题跟踪器中提交了一个问题单-https://youtrack.jetbrains.com/issue/PY-57125/PyCharm-stops-on-non-hit-breakpoint-inside-pattern-matching-block