While i do find the way indentation works as part of the syntax in Python a bit questionable, it still works just fine as long as you tell your code editor to only use tab or only space. At least it forces sloppy programmers to properly indent there stuff i suppose.
Python still has a ; for the case where you DO want to terminate a line early, but doesn't require one where its obvious you finished your line.
# Here is some code
y = 3
x = 5
print(x+y)
# This is functionally the same
y = 3; x = 5; print(x+y)
# This is also the same
y\
=\
3
x = 5; print(x+y)
# This is a more sensible use of it on a not so sensible function
x = really_long_named_function_with_plenty_of_arguments( \
1,2,3,4 \
,really_long_varriable_name - 10 \
,really_long_varriable_name + 110 )
print(x)
Same thing, different syntax. If you compare how many lines of C code are a single statement with a ; on the end versus how many lines are split over multiple id say it makes more sense to have a character to continue on another line than having a character to terminate a line. Just like it makes more sense for the clutch in your car to be engaged when the pedal is released since that's the state it spends most of its time in.
Its also annoying when a compiler gets confused about a missing ; and spits out a nonsense error. Tho C compilers tend to be fairly robust and error out on the next line, of even going straight out telling you "Hey dumbass did you forget a semicolon there?". But i seen Verilog or VHDL compilers get so confused that they start throwing nonsense errors in code 300 lines before or after the missing semicolon, resulting in a good bit of cursing and shouting at the compiler until you figure out what actually made it so upset about compiling this file.