Why does Python not allow a comment after a line continuation "\" character, is it a technical or stylistic requirement?
According to the docs (2.1.5):
A line ending in a backslash cannot carry a comment.
and (2.1.3):
A comment signifies the end of the logical line unless the implicit line joining rules are invoked. Comments are ignored by the syntax.
PEP 8 does discourage inline comments so I can see how this may stylistically be "unpythonic." I could also see how the "\" could be ambiguous if it allowed comments (should the interpreter ignore all subsequent tokens or just comments?) but I think a distinction could easily be made.
Coming from Javascript and accustomed to the fluid interface style, I prefer writing chains like the following instead of reassignment:
dataset = tf.data.Dataset.from_tensor_slices(data)\
.interleave(special_sauce_fn)\
.shuffle(shuffle_buffer_size)\
.batch(batch_size)\
.prefetch()\
.cache()
Instead of
dataset = dataset.interleave(special_sauce_fn)
dataset = dataset.shuffle(shuffle_buffer_size)
dataset = dataset.batch(batch_size)
dataset = dataset.prefetch()
dataset = dataset.cache()
While this example is rather self-explanatory, at times I feel like a contextual comment could enhance readability of the code.
Generally, line-continuation characters are discouraged. Instead, use parentheses:
dataset = (
tf.data.Dataset.from_tensor_slices(data)
.interleave(special_sauce_fn) # comment to your
.shuffle(shuffle_buffer_size) # heart's delight
.batch(batch_size)
.prefetch()
.cache()
)
For the same reason you can't have whitespace after the backslash. It simplifies the parsing, as it can simply remove any backslash-newline pairs before doing any more parsing. If there were spaces or comments after the backslash, there's no backslash-newline sequence to remove.