没有'+'运算符的字符串连接
我在玩python,我意识到我们不需要使用’+’运算符来连接字符串,除非它与值一起使用。
例如:
string1 = 'Hello' 'World' #1 works fine
string2 = 'Hello' + 'World' #2 also works fine
string3 = 'Hello'
string4 = 'World'
string5 = string3 string4 #3 causes syntax error
string6 = string3 + string4 #4 works fine
现在我有两个问题:
- 为什么语句3无效,而语句1无效?
- 陈述1和2之间是否存在技术上的差异,例如计算速度等?
-
从文档:
允许使用可能使用不同的引用约定的多个相邻字符串文字(由空格分隔),其含义与它们的串联相同。因此,“ hello”“世界”等同于“
helloworld”。
语句3不起作用,因为:
在运行时必须使用’+’运算符来连接字符串表达式。
请注意,文档中子标题的标题也是“字符串文字串联”。这仅适用于字符串文字,不适用于其他对象。
可能没有什么区别。如果有的话,它可能很小,任何人都不必担心。
另外,请了解这样做可能存在危险:
>>> def foo(bar, baz=None): ... return bar ... >>> foo("bob" ... "bill") 'bobbill'
这是一个 绝不应该错误传递错误 的完美示例 。 如果我想
"bill"
成为论点baz
怎么办?我忘记了逗号,但是没有出现错误。相反,已发生串联。