B = A / 2
...
Why forward declare A = None?
It /can/ be useful, but it should be opt-in. JavaScript had to figure this out with their 'var' declaration scoping too.
Also, try:
A = (predicate) ? 3 : 5
Or, in a language that embraces expressions instead of statements:
val A = if (predicate) { 3 } else { 5 }
These are all more intentional, concise, and readable than allowing variables to outlive their scope by default.
final a; if (predicate) { a = 3; } else { a = 5; }
B = A / 2
...
Why forward declare A = None?