这不能满足您的期望:
if var is 'stringone' or 'stringtwo': dosomething()
它与:
if (var is 'stringone') or 'stringtwo': dosomething()
始终为真,因为它
'stringtwo'被认为是“真”值。
有两种选择:
if var in ('stringone', 'stringtwo'): dosomething()或者您可以编写单独的相等性测试,
if var == 'stringone' or var == 'stringtwo': dosomething()
不要使用
is,因为
is比较对象标识。有时您可能会因为Python实习生很多字符串而无法使用它,就像您可能在Java中因为Java实习生很多字符串而放弃它一样。但是
is除非真正想要对象标识,否则不要使用。
>>> 'a' + 'b' == 'ab'True>>> 'a' + 'b' is 'abc'[:2]False # but could be True>>> 'a' + 'b' is 'ab'True # but could be False



