Почему это происходит, если вы компилируете условное выражение типа
def f():
if None:
print(222)
if 0:
print(333)
ветки, которые используют числа, оптимизируются, но те, которые используют None
, не так ли? Пример:
3 0 LOAD_CONST 0 (None)
3 POP_JUMP_IF_FALSE 14
4 6 LOAD_CONST 1 (222)
9 PRINT_ITEM
10 PRINT_NEWLINE
11 JUMP_FORWARD 0 (to 14)
5 >> 14 LOAD_CONST 0 (None)
17 RETURN_VALUE
В каких сценариях могли бы if 0
и if None
вести себя по-другому?