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