当我遇到以下问题时,我正在阅读“如何像计算机科学家一样思考:用Python学习”一书:
作为练习,描述string.join(string.split(song))和歌曲之间的关系。所有琴弦都一样吗?他们什么时候会有所不同? (歌被定义为“西班牙的雨......”)
然而,在检查之后,我发现两者都是不同的字符串。我尝试使用string.join(string.split(song)) is song
和f is song
,其中f已被赋值为string.join(string.split(song)),并且都评估为False
。为什么会这样?
答案 0 :(得分:3)
您要比较的字符串的实际值是多少?
如果两者相同,这是因为身份运算符is
和等号运算符==
之间存在差异。
简而言之,当对象相同时,is
会产生True
。因为在您的示例中创建了一个新字符串,所以它会生成False
。
如果您使用==
,则会对字符串进行深度比较,并且会返回True
。
如果比较的字符串不相同,则==
或is
都不应生成True
。