Python初学者8号 发表于 2021-8-11 10:04:02

不给逗号就在一起了??

好家伙,我才发现这个问题
l='a'   'b'
答案是l='ab'



不加逗号就在一起了吗 哈哈这是为啥 我怎么都没听过
{:10_266:}

阿奇_o 发表于 2021-8-11 10:04:03

本帖最后由 阿奇_o 于 2021-8-11 10:54 编辑

我也没见过,哈哈,没想到Python解释器还有这样的特性。。
估计解释器首先strip()掉多余的空格,留下的字符只要合法,就不会报错。
至于为什么它们会连在一起,还真不清楚,哈哈,这是啥解释器的逻辑,有没有大神可以解释一下
{:10_297:}
>>> l = 'a' 'b'
>>> l
'ab'
>>> 'a' 'b'
'ab'
>>> 'a'_'b'
SyntaxError: invalid syntax
>>> 1 2
SyntaxError: invalid syntax
>>>
---------------补充-----------------
答案 好像在这里,(官方解释)对 模糊有歧义的空格,会采用"最长的合法字符串"作为"token"
https://docs.python.org/3/reference/lexical_analysis.html#other-tokens
Whitespace characters (other than line terminators, discussed earlier) are not tokens, but serve to delimit tokens.
Where ambiguity exists, a token comprises the longest possible string that forms a legal token, when read from left to right.

不知道我是否理解准确了,哈哈

Python初学者8号 发表于 2021-8-11 11:29:24

阿奇_o 发表于 2021-8-11 10:33
我也没见过,哈哈,没想到Python解释器还有这样的特性。。
估计解释器首先strip()掉多余的空格,留下的字 ...

看了你的链接,看不懂,还不如看你的解释,哈哈哈,其实也没完全懂 ,哈哈哈{:10_266:}

wangka 发表于 2021-8-11 20:11:57

Python视为相乘

Python初学者8号 发表于 2021-8-12 08:51:05

wangka 发表于 2021-8-11 20:11
Python视为相乘

不行啊,哪有有字符和字符之间的相乘啊
>>> 'a'*'a'
Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'str'
页: [1]
查看完整版本: 不给逗号就在一起了??