[Python-ideas] Comment syntax similar to /* */ in C?
Steven D'Aprano
steve at pearwood.info
Sun Oct 18 16:53:33 CEST 2009
On Mon, 19 Oct 2009 12:40:01 am Sturla Molden wrote:
> In Python a comment start from # and spans the rest of the line,
> similar to // in C++.
>
> In C/C++, we can also make comments that don't span the rest of the
> line, but has two delimiters:
>
>
> /* comment */
>
>
> This allows us to write:
>
>
> foobar(a, b /* comment on b */, c, d, e, f);
Ewwww. That's horrible. If you ask me, in-expression comments are a
misfeature the world would be better off without.
> I have sometimes missed this possibility when writing Python code. To
> my knowledge there is no equivalent to /* */ in Python.
>
> I don't care much about choice of delimiter. Perhaps ### comment ###
> is the most intuitive, as it has resemblance to triple-quotes for
> text strings? It also stands out clearly in black/white text.
>
>
> foobar(a, b ### comment on b ###, c, d, e, f)
>
> foobar(a, b ### comment on b
> that spans two lines ###, c, d, e, f)
Take advantage of Python's rules for handling open parentheses:
foobar(a, b, # comment on b
c, d, e, f)
foobar(a, b, # comment on b
# more and longer comment on b
c, d, e, f)
And don't forget that there's no need for comments to be on the same
physical line they are referring to. You are allowed to include
comments surrounding the line.
> ###
> comment that spans multiple lines
> ###
Use a modern editor that lets you easily comment and uncomment multiple
lines at once.
> P.S. In Python we can emulate multiline comments using triple-quoted
> strings, but conceptually strings and comments are very different.
> I.e. strings are objects, comments are auxillary text discarded at
> compile time. Strings are objects created at runtime, comments are
> not.
Guido's time-machine strikes again.
>>> import dis
>>> def test():
... x = 1
... """
... This is a triple-quote comment.
... """
... return x
...
>>> dis.dis(test)
2 0 LOAD_CONST 1 (1)
3 STORE_FAST 0 (x)
6 6 LOAD_FAST 0 (x)
9 RETURN_VALUE
String literals -- not just triple-quoted strings, but any string
literal -- that don't go anywhere are discarded by the Python compiler,
precisely so they can be used as comments.
--
Steven D'Aprano
More information about the Python-ideas
mailing list