如何评论运营商之间的大型任务?

Jor*_*eFG 1 python comments python-3.x

fontName  = b"\xC8\xC1\x10" \
            # Representación del tipo de fuente en bytes.
          + fontNamesInBytes[fontName] \
            # Tipo de atributo: attr_ubyte | Atributo: FontName (Nº 168)
          + "\xF8\xA8"
Run Code Online (Sandbox Code Playgroud)
python3 test.py
  File "test.py", line 14
    + fontNamesInBytes[fontName] \
    ^
IndentationError: unexpected indent

python3 test.py
  File "test.py", line 13
    \# Representación del tipo de fuente en bytes.\
                                                   ^
SyntaxError: unexpected character after line continuation character

python3 test.py
  File "test.py", line 15
    """ Tipo de atributo: attr_ubyte | Atributo: FontName (Nº 168)"""\
                                                                     ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

有没有办法在作业之间作出评论?我试过""" """但也给出了语法错误.

编辑马丁:

fontName  = b"\xC8\xC1\x10" \
          """ Representación del tipo de fuente en bytes."""\
          + fontNamesInBytes[fontName] \
          """ Tipo de atributo: attr_ubyte | Atributo: FontName (Nº 168) """\
          + b"\xF8\xA8"
Run Code Online (Sandbox Code Playgroud)
    python3 test.py
  File "test.py", line 15
    """ Tipo de atributo: attr_ubyte | Atributo: FontName (Nº 168) """\
                                                                      ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

vau*_*tah 6

你可以做

In [5]: ('a'
   ...: # comment
   ...: 'b')
Out[5]: 'ab'
Run Code Online (Sandbox Code Playgroud)

你的代码会变成

fontName  = (b"\xC8\xC1\x10" 
             # Representación del tipo de fuente en bytes.
             + fontNamesInBytes[fontName] +
             # Tipo de atributo: attr_ubyte | Atributo: FontName (Nº 168)
             b"\xF8\xA8")
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为括号,方括号或花括号中的表达式可以在不使用反斜杠的情况下分割在多个物理行上,并且隐式连续行可以带有注释(根据文档).


Mar*_*ers 5

你不能在这样的语句之间添加注释,因为它\有效地删除了换行符.因此,之后的所有文本#都是注释,不再是表达式的一部分.

您可以将表达式放在括号中:

fontName = (
    b"\xC8\xC1\x10"
    # Representación del tipo de fuente en bytes.
    + fontNamesInBytes[fontName]
    # Tipo de atributo: attr_ubyte | Atributo: FontName (Nº 168)
    + b"\xF8\xA8")
Run Code Online (Sandbox Code Playgroud)

现在注释被视为单独的行,但解析器继续扩展表达式直到结束).通过使用括号,您仍然可以使用新行,这对于在评论结束并且表达式继续时发出信号至关重要.

要了解差异,请研究线结构文档 ; 表达式应该形成一条逻辑线,但通常只允许一条物理线.但在括号内,物理换行符被忽略,允许隐式行加入:

括号,方括号或花括号中的表达式可以分割在多个物理行上,而不使用反斜杠.

[...]

隐含连续的行可以带有评论

  • @Jorge:`"""......"""`三引号字符串不是注释; 它们是字符串,只允许的语法与常规字符串略有不同. (2认同)