【问题标题】:How can I break string creation over several lines, but include inline comments如何打破多行字符串创建,但包含内联注释
【发布时间】:2017-09-26 23:19:05
【问题描述】:

我想创建一个字符串,但每个部分都包含 cmets。在 Python 中,我可以在函数 print 中执行此操作,但如果我正在创建变量,则无法执行此操作。

print("Hello "  + # WORKS
       "World!")

greeting = "Hello " + # FAILS
           "World!"

print(greeting)

抛出错误:

  File "space.py", line 4
    greeting = "Hello " + # FAILS
                                ^
SyntaxError: invalid syntax

我尝试了续行:

greeting = "Hello " + \# FAILS
           "World!"

print(greeting)
  File "line_continuation.py", line 4
    greeting = "Hello " + \# FAILS
                                 ^
SyntaxError: unexpected character after line continuation character

【问题讨论】:

标签: python string comments


【解决方案1】:

你可以将一个字符串分成多行,只需将它们一个接一个地放置:

a = ("hello " # can use comments
    "world")
print(a)

b = "hello " "world" # this also works
print(b)

c = a " again" # but this doesn't, SyntaxError
print(c)

【讨论】:

  • 您需要用() 思想将字符串括起来。这将产生语法错误。
  • @Grimmy 不错,不过只适用于多行,单行没有括号也可以。
  • 是的,我大概花了两年时间才发现 ("hello") 是一个字符串, ("hello",) 是一个元组。甚至将其添加到我的答案中。很容易搞砸。
【解决方案2】:

如果你想控制空间,你可以这样做:

print("This "  # comment 1
      "is "  # comment 2
      "a "  # comment 3
      "test")  # comment 4

s = ("This "  # comment 1
     "is "  # comment 2
     "a "  # comment 3
     "test")  # comment 4
print(s)

输出:

This is a test
This is a test

使用逗号将在每个字符串之间添加一个空格,并且特定于print。上面显示的方法通常适用于任何地方的字符串。

注意这将代表一个字符串,所以如果你想注入变量,你需要在最后一行.format

在字符串周围使用() 的做法经常与创建tuple 混淆,但除非它包含逗号,否则它不是元组。

s = ("Hello")
print(type(s), s)
s = ("Hello",)
print(type(s), s)

输出:

<class 'str'> Hello
<class 'tuple'> ('Hello',)

【讨论】:

    【解决方案3】:

    我刚刚想通了。在正在构造的字符串部分周围添加括号是有效的:

    print("Hello "  + # WORKS
           "World!")
    
    greeting =("Hello " + # WORKS TOO
               "World!")
    
    print(greeting)
    

    【讨论】:

    • “逗号”是指“括号”吗?
    • @BrenBarn 谢谢!我完全知道区别。不知道我为什么写“逗号”。
    猜你喜欢
    • 2012-04-24
    • 2020-08-20
    • 2014-09-13
    • 2014-09-13
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    相关资源
    最近更新 更多