我正在使用 type() 运算符在 python shell 中进行试验。我注意到:
type('''' string '''')
返回一个错误,扫描字符串时遇到问题
然而:
type(''''' string ''''')
工作正常并响应找到了一个字符串。
到底是怎么回事?它是否与type('''' string '''')
被解释为type("" "" string "" "")
空字符串和未定义变量的无意义串联的事实有关?
我正在使用 type() 运算符在 python shell 中进行试验。我注意到:
type('''' string '''')
返回一个错误,扫描字符串时遇到问题
然而:
type(''''' string ''''')
工作正常并响应找到了一个字符串。
到底是怎么回事?它是否与type('''' string '''')
被解释为type("" "" string "" "")
空字符串和未定义变量的无意义串联的事实有关?
您正在用 3 个引号加上一个额外的引号来结束一个字符串。这有效:
>>> ''''string'''
"'string"
换句话说,Python 看到 3 个引号,然后字符串在接下来的3 个引号处结束。之后的任何内容都不再是字符串的一部分。
Python 还连接一个接一个地放置的字符串:
>>> 'foo' 'bar'
'foobar'
so'''''string'''''
的意思是'''''string''' + ''
真的;第一个字符串在开始的 3 个引号之后开始,直到找到 3 个结束引号。这三个右引号之后是另外两个引号,形成一个单独但空的字符串:
>>> '''''string'''
"''string"
>>> '''''string'''''
"''string"
>>> '''''string'''' - extra extra! -'
"''string - extra extra! -"
故事的寓意:Python 仅支持三引号或单引号。任何偏离这一点的事情都只会导致痛苦。
鉴于以下情况,您的假设似乎是正确的:
a = '''' string ''''
File "<stdin>", line 1
a = '''' string ''''
^
SyntaxError: EOL while scanning string literal
正如 Martijn 在他的回答中所说,Python 正在尝试连接相邻的字符串,并在找不到结尾时失败'
。