%vs +与Python中的字符串相关?

THe*_*dss 1 python syntax

这个:

hilarious = False
joke_evaluation = "Isn't that joke so funny?! %r"

print joke_evaluation % hilarious
Run Code Online (Sandbox Code Playgroud)

还有这个:

w ="这是...的左侧"e ="右侧的字符串."

打印w + e

似乎在做同样的事情.为什么我不能将代码更改为:

print joke_evaluation + hilarious
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

Ale*_*x L 6

%r调用repr(),表示False(bool)为"False"(字符串).

+只能用于将字符串与其他字符串连接(否则你得到一个TypeError: cannot concatenate 'str' and 'bool' objects)

您可以False在连接之前转换为字符串:

>>> print "Isn't that joke so funny?!" + str(False)
Run Code Online (Sandbox Code Playgroud)

您还可以尝试新的字符串格式:

>>> print "Isn't that joke so funny?! {!r}".format(False)
Isn't that joke so funny?! False
Run Code Online (Sandbox Code Playgroud)