【发布时间】:2015-08-09 04:24:52
【问题描述】:
使用解释器时,表达式 'a' in ('abc') 返回 True,而 'a' in ['abc'] 返回 False。有人可以解释这种行为吗?
【问题讨论】:
-
('abc')不是元组,它只是字符串'abc'。要实际检查包含字符串'abc'的元组中的成员资格,请使用a in ('abc',)。 -
这是由于表达式优先级和元组的双重使用括号,这导致单元素元组的语法很奇怪
-
('abc')中的括号只是为了装饰,也是潜在的混淆来源。我花了一段时间才克服这个问题;我也认为括号表示一些特别的东西(参见方括号或花括号,它们确实意味着一些特别的东西)。在这种用法中,这些括号的意义为零。xyz = (x, y, z)和xyz = x, y, z之间没有区别。逗号的存在具有特殊含义(空元组除外,其中()确实具有特殊含义)。 -
当然,您可以在解释器中输入
'abc'、('abc')和['abc'],看看它们是什么。
标签: python