Python 如何检查变量是否等于一个字符串或另一个字符串?

Python 如何检查变量是否等于一个字符串或另一个字符串?,python,Python,这不行!我有一个变量,当它是其中一个值时,我需要它做一些事情,但它不会进入if语句。在Javaif(var==“stringone”| |“stringtwo”)。我如何用Python编写这个 if var is 'stringone' or 'stringtwo': dosomething() “is”用于检查两个引用是否引用了同一个对象。它比较内存地址。 显然,“stringone”和“var”是不同的对象,它们只包含相同的字符串,但它们是类“str”的两个不同实例。所以它们当然有

这不行!我有一个变量,当它是其中一个值时,我需要它做一些事情,但它不会进入if语句。在Java
if(var==“stringone”| |“stringtwo”)
。我如何用Python编写这个

if var is 'stringone' or 'stringtwo':
    dosomething()
“is”用于检查两个引用是否引用了同一个对象。它比较内存地址。 显然,“stringone”和“var”是不同的对象,它们只包含相同的字符串,但它们是类“str”的两个不同实例。所以它们当然有两个不同的内存地址,'is'将返回False

if var == 'stringone' or var == 'stringtwo':
    dosomething()
或者更像蟒蛇

if var == 'stringone' or var == 'stringtwo':
    do_something()

两张分开的支票。另外,使用
=
而不是
is
检查是否相等,而不是身份

if var in ['string one', 'string two']:
    do_something()
if var == 'stringone' or var == 'stringtwo':
    dosomething()

这并不能满足您的期望:

 if var=='stringone' or var=='stringtwo':
     dosomething()
这与:

if var is 'stringone' or 'stringtwo':
    dosomething()
这总是正确的,因为
'stringtwo'
被认为是“真”值

有两种选择:

if (var is 'stringone') or 'stringtwo':
    dosomething()
或者您可以编写单独的相等性测试

if var in ('stringone', 'stringtwo'):
    dosomething()
不要使用
is
,因为
is
比较对象标识。有时,您可能会侥幸逃脱,因为Python实习了很多字符串,就像您在Java中侥幸逃脱一样,因为Java实习了很多字符串。但是不要使用
is
,除非您确实想要对象标识

if var in ['string one', 'string two']:
    do_something()
if var == 'stringone' or var == 'stringtwo':
    dosomething()
对于汤中的a(“p”,{'id':'pagination'})[0](“a”,{'href':True}):

如果在中创建Unicode(a.text)['我很确定这两个错误以前都被涵盖过。对于is/==区别:@DSM也缺少冒号。为什么第二个被认为更像pythonic?@RahulSharma避免在复合if语句中重复变量名更好,因为你不需要它是可变的,也不关心它们签入的顺序,所以使用set:
if var在{'string one','string two'}:
中速度也更快。@aJetHorn实际上我认为元组比sets快。非常感谢!这修复了我程序中的许多问题。:)我没有足够的声誉。我今天刚加入StackOverflow。