那么4个引号的故事是什么?

fro*_*eas 5 python string quotes python-2.7

我正在使用type()运算符在python shell中进行实验.我注意到:

type('''' string '''') 
Run Code Online (Sandbox Code Playgroud)

返回错误,扫描字符串时出错

然而:

type(''''' string ''''')
Run Code Online (Sandbox Code Playgroud)

工作正常,并回应找到一个字符串.

到底是怎么回事?它是否与type('''' string '''')被解释为的事实有关type("" "" string "" ""),因此是空字符串和未定义变量的无意义串联?

Mar*_*ers 11

您正在以3个引号结束一个字符串,另外还有一个额外的字符串 这有效:

>>> ''''string'''
"'string"
Run Code Online (Sandbox Code Playgroud)

换句话说,Python看到3个引号,然后字符串在接下来的 3个引号结束.之后的任何内容都不再是字符串的一部分.

Python还连接一个接一个地放置的字符串:

>>> 'foo' 'bar'
'foobar'
Run Code Online (Sandbox Code Playgroud)

所以'''''string'''''意味着'''''string''' + ''真的; 第一个字符串在开头3引号后立即开始,直到找到3个结束引号.接下来是两个引号,然后是另外两个引号形成一个单独但空的字符串:

>>> '''''string'''
"''string"
>>> '''''string'''''
"''string"
>>> '''''string'''' - extra extra! -'
"''string - extra extra! -"
Run Code Online (Sandbox Code Playgroud)

故事的道德:Python只支持三重或单引号.任何与此相反的事情都只会导致痛苦.

  • @frogeyedpeas:使用escapes(`"\"'string'\""`)或三个单引号(`''''''string'"'''`). (2认同)