On Sun, 24 Jul 2016 12:06 am, BartC wrote: > pass can only do so much. If doesn't help here: > > for x in sequence: > print("Something") > print("Something else") > > Was the second print meant to be indented as well or not?
True. But once you start wondering about code the programmer *hasn't* written, you could drive yourself crazy: ...but what if the second print is supposed to follow an "if" clause, which has been left out...? *Most* for-loops have non-empty blocks. Only a tiny minority have empty blocks for any appreciable period of time. (This is not 1970, and we don't write timing loops like "for x in range(1000): pass".) *Most* code is correctly indented. So the interpreter should assume that indentation *is correct*, unless there is a reason to doubt that. What sort of reasons could there be? - if the indentation increases when it shouldn't: print("Hello") print("World!") # unexpected indent - if it dedents to a value that doesn't align with a previous block: for x in sequence: print(x) print("dedented") # half-way between current and previous block - if it doesn't indent when you expect it to: for x in sequence: print(x) Yes, that last one *could* be an empty block. But empty blocks are rare. Its more likely to be an error. If it's not an error, than the programmer can just insert a "pass" statement to satisfy the interpreter. > Perhaps rather than 'pass', the language ought to have provided an > optional 'end' keyword to mark the end of a block. Then there would be > less speculation about what was meant: It can't be optional. If it were optional, we'd be no better off: for x in sequence: print(x) The "end" is missing, but is it missing from the end of the empty block, or the end of the non-empty block? for x in sequence: end print(x) for x in sequence: print(x) end In any case, using "end" instead of "pass" is a poor tradeoff. Instead of needing to use "pass" (say) one time in a thousand when it is needed, you would need to use "end" 999 times in a thousand when it *isn't* needed. > for x in sequence: > print("Something") > end > print("Something else") > > (And no speculation at all if 'end' was mandatory. Python already > provides 'else' (and 'except'?) which can do a similar job in some > circumstances.) -- Steven “Cheer up,” they said, “things could be worse.” So I cheered up, and sure enough, things got worse. -- https://mail.python.org/mailman/listinfo/python-list