在python中你可以这样说:
x = """""" # x = ''
Run Code Online (Sandbox Code Playgroud)
Python词法分析器是否将此视为两个三重引号而内部没有任何内容?即沿着x = """ """(没有空间)的路线?
这是我的直接想法.但是,这在python中是可能的:
>>> "4" "5"
'45'
>>> # and
>>> "4""5"
'45'
Run Code Online (Sandbox Code Playgroud)
所以我可以看到,x = """"""也可能是沿着x = "" "" ""(没有空格)的线条.我只是想知道,是""""""作为两个三重引号还是三对正常引号?或完全不同的东西?谢谢!
编辑:显然,作为Python中的程序员并不重要.但是,Python解释器肯定必须选择其中之一,我想知道哪个.
您可以使用tokenizer来判断:
>>> from StringIO import StringIO
>>> from tokenize import generate_tokens as gt
>>> from pprint import pprint as pp
>>> code = 'x=""""""'
>>> codeio = StringIO(code)
>>> tokens = list(gt(codeio.readline))
>>> pp(tokens)
[(1, 'x', (1, 0), (1, 1), 'x=""""""'),
(51, '=', (1, 1), (1, 2), 'x=""""""'),
(3, '""""""', (1, 2), (1, 8), 'x=""""""'),
(0, '', (2, 0), (2, 0), '')]
Run Code Online (Sandbox Code Playgroud)
第一个标记是'x'.第二个是'=',第三个是'"""""".没有三个"""代币.
PS用于比较:
>>> othercode='y="led" "zeppelin"'
>>> othercodeio = StringIO(othercode)
>>> othertokens = list(gt(othercodeio.readline))
>>> pp(othertokens)
[(1, 'y', (1, 0), (1, 1), 'y="led" "zeppelin"'),
(51, '=', (1, 1), (1, 2), 'y="led" "zeppelin"'),
(3, '"led"', (1, 2), (1, 7), 'y="led" "zeppelin"'),
(3, '"zeppelin"', (1, 8), (1, 18), 'y="led" "zeppelin"'),
(0, '', (2, 0), (2, 0), '')]
Run Code Online (Sandbox Code Playgroud)