if var is 'stringone' or 'stringtwo':
dosomething()
这不行!我有一个变量,我需要它做任何的值,但它不会输入if语句。在Java if (var == "stringone" || "stringtwo")
的作品。我如何在Python中编写这个?如何检查一个变量是否等于一个字符串或另一个字符串?
if var is 'stringone' or 'stringtwo':
dosomething()
这不行!我有一个变量,我需要它做任何的值,但它不会输入if语句。在Java if (var == "stringone" || "stringtwo")
的作品。我如何在Python中编写这个?如何检查一个变量是否等于一个字符串或另一个字符串?
这不会做你所期望的:
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
非常感谢!这已经解决了我的程序中的许多问题。 :) –
if var == 'stringone' or var == 'stringtwo':
dosomething()
'is'用于检查两个引用是否被引用到同一个对象。它比较内存地址。 显然,'stringone'和'var'是不同的对象,它们只包含相同的字符串,但它们是类'str'的两个不同实例。所以他们当然有两个不同的内存地址,'is'会返回False。
两个独立的检查。此外,请使用==
而不是is
来检查平等而不是身份。
if var=='stringone' or var=='stringtwo':
dosomething()
别忘了投票! –
我没有足够的信誉。我今天刚刚加入了StackOverflow。 –
for a in soup("p",{'id':'pagination'})[0]("a",{'href': True}):
if createunicode(a.text) in ['<','<']:
links.append(a.attrMap['href'])
else:
continue
这对我的作品。
我很确定这两个错误都被覆盖过。 –
为/ ==区别:http://stackoverflow.com/questions/1504717/python-vs-is-comparing-strings-is-fails-sometimes-why – tanantish