2024-04-19 03:29:08 发布
网友
if var is 'stringone' or 'stringtwo': dosomething()
这不管用!我有一个变量,当它是其中一个值时,我需要它执行一些操作,但它不会输入if语句。在Java中,if (var == "stringone" || "stringtwo")工作。我如何用Python编写这个?
if (var == "stringone" || "stringtwo")
这不符合您的期望:
同:
if (var is 'stringone') or 'stringtwo': dosomething()
这总是正确的,因为'stringtwo'被认为是“正确”的值。
'stringtwo'
有两种选择:
if var in ('stringone', 'stringtwo'): dosomething()
或者你可以编写单独的等式测试
if var == 'stringone' or var == 'stringtwo': dosomething()
不要使用is,因为is比较对象标识。有时,你可能会因为Python实习生使用了大量字符串而侥幸逃脱,就像在Java中,你可能因为Java实习生使用了大量字符串而侥幸逃脱一样。但是不要使用is,除非您真的需要对象标识。
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': do_something()
或者更像是Python
if var in ['string one', 'string two']: do_something()
“is”用于检查两个引用是否引用同一对象。它比较内存地址。 显然,“stringone”和“var”是不同的对象,它们只包含相同的字符串,但它们是类“str”的两个不同实例。所以它们当然有两个不同的内存地址,而“is”将返回False。
这不符合您的期望:
同:
这总是正确的,因为
'stringtwo'
被认为是“正确”的值。有两种选择:
或者你可以编写单独的等式测试
不要使用
is
,因为is
比较对象标识。有时,你可能会因为Python实习生使用了大量字符串而侥幸逃脱,就像在Java中,你可能因为Java实习生使用了大量字符串而侥幸逃脱一样。但是不要使用is
,除非您真的需要对象标识。或者更像是Python
“is”用于检查两个引用是否引用同一对象。它比较内存地址。 显然,“stringone”和“var”是不同的对象,它们只包含相同的字符串,但它们是类“str”的两个不同实例。所以它们当然有两个不同的内存地址,而“is”将返回False。
相关问题 更多 >
编程相关推荐