我有一个使用str(object)转换为字符串的对象。我想使用字符串检查,如果我有一个None对象(在我的情况下它永远不会是'无'除非对象是None)。
string = str(object) // object is None
if string is 'None' or string is str(None):
// do something
问题是条件永远不会过去。我怎么检查这个案子?
str(None)是str(无)的方式与False相同。为什么呢?
答案 0 :(得分:3)
if object is None:
print("the object is None")
else:
print("the object exists")
答案 1 :(得分:2)
使用
if string == 'None':
# Do something.
在python中查看What is the semantics of 'is' operator in Python?' is`的含义。
答案 2 :(得分:2)
每次进行转换时,另一个对象的字符串转换通常不会是同一个对象;它每次都会生成一个新字符串。 is
运算符比较标识,而不是值。你想要==
>>> l = [1,2,3]
>>> str(l) is str(l)
False
>>> str(l) == str(l)
True
答案 3 :(得分:1)
首先,object
是一个预定义的类,是所有类的共同祖先。但是,它与您的问题无关。
在调用string = str(None)
之后,变量字符串保持&#39; None&#39;,一个python字符串。您可以致电type(string) # should be <type 'str'>
进行确认。要解决此问题,您可以将其替换为:
答案 4 :(得分:1)
在您知道的任何时候使用Nonetype检查None无无可能性。实际上,除非你传入的返回字符串是字符串值“无”,否则你不应该设计你的应用程序来检查字符串比较的可能性。尽管是vs ==运算符差异。