【问题标题】:Strange valid python syntax with string [duplicate]带有字符串的奇怪有效python语法[重复]
【发布时间】:2018-11-14 19:44:06
【问题描述】:

我在Python 3.6.1上运行,今天漏了一个逗号,如下:

nt = namedtuple('Record', ['c', 'a' 'b'])
# instead the following is what I actually want
nt = namedtuple('Record', ['c', 'a', 'b'])

但我只是想知道为什么第一种方式在任何方面都是有效的 Python?它不应该抱怨语法错误吗?

我刚刚在 3.5.2 和 2.7.11 中尝试过。似乎都有效。但它有效吗?

【问题讨论】:

  • 'a' 'b''ab' 这是有效的
  • 是的,连续的字符串文字被连接起来。就像在 C 或其他几种语言中一样。
  • 我已经在 Python 中工作了两年,这是我第一次知道这一点。我可以知道这背后的哲学是什么吗? @MartijnPieters 我相信这是一个错误的来源——我认为它应该只是告诉我语法错误

标签: python syntax


【解决方案1】:

Python 将连接由空格分隔的相邻字符串: https://docs.python.org/2.0/ref/string-catenation.html

【讨论】:

    【解决方案2】:

    来自Python tutorial

    两个或多个字符串字面量(即用引号括起来的字面量) 彼此相邻的会自动连接。

    >>> 'Py' 'thon'
    'Python'
    

    【讨论】:

    • 我已经在 Python 中工作了两年,这是我第一次知道这一点。我可以知道这背后的哲学是什么吗?
    • 它在链接中:它对于将长字符串分成多行很有用。
    • 但在我的情况下,它是错误的来源。我们有 """""" 格式和 ('' \n '') 格式已经正确
    • 好吧,我想这只是设计决定。我会记住这一点
    • 不,三引号和\n 用于创建包含换行符的字符串。这适用于不包含换行符但需要分成多行源代码以避免非常长的代码行的长字符串。它只是消除了对+ 的需求。我同意好处仍然不是很大,它可能会导致错误,我以前也被它咬过。我不能说为什么决定收益大于风险。也许是因为这样的错误通常会很快被发现。
    猜你喜欢
    • 2023-03-20
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2019-11-20
    相关资源
    最近更新 更多