Первый код, который вы предлагаете, не всегда ведет себя как второй, поскольку здесь встречный пример, где condition
- это истина, val1
- это 0, а val2
- это 2
num1 = True and 0 or 2
num1
равно 2 после присваивания, потому что 0 оценивается как ложное в контексте логического выражения.Во втором коде результат будет 0 вместо.