我是Python新手,需要帮助来理解两个与串接字符串有关的问题。我知道可以像这样使用+符号来添加字符串以连接彼此。
>>> 'a' + 'b'
'ab'
然而,我最近发现你甚至不需要使用+符号来连接字符串(偶然地/胡乱地),这导致了我要理解的第一个问题-这是如何/为什么可能的!?
>>> print 'a' + 'b'
ab
此外,我还理解'\n'字符串产生一个'newline'。但当和我的第一个问题一起使用时。我明白了。
>>> print '\n' 'a'*7
a
a
a
a
a
a
a
所以,我的第二个问题出现了——“为什么我得到7行新的字母‘a’。”。换句话说,中继器符号*不应该重复字母“a”7次吗!?如下所示。
>>> print 'a'*7
aaaaaaa
请帮我澄清发生了什么事。
当
"a" "b"
转换为"ab"
时,这与将字符串与+
连接不同。在读取Python源代码时,为了方便起见,会自动连接相邻的字符串。这不是一个正常的操作,这就是为什么它没有遵循您期望的
+
和*
操作顺序。实际上被解释为
而不是
我不知道你说的“怎么可能”是什么意思。编写一条规则:相邻的两个字符串连接起来。然后在解析器中实现它。为什么?因为它允许您方便地执行以下操作:
这样,你就可以描述你在做什么。
当你做A*B+C时,计算机总是先做A乘以B,然后再加C,因为乘法在加法之前。
当您通过将字符串文本放在一起并进行乘法来进行字符串连接时,首先是特殊的字符串连接。这意味着
'\n' 'a' * 7
与('\n' 'a') * 7
相同,因此您重复的字符串是'\na'
。如果不使用逗号分隔字符串,Python会将它们连接在一起:
所以你实际上打印了7次。
相关问题 更多 >
编程相关推荐