为什么str(None)不是str(None)?

时间:2014-05-08 03:18:59

标签: python string

我有一个使用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相同。为什么呢?

5 个答案:

答案 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'>进行确认。要解决此问题,您可以将其替换为:

  • string ==&#39;无&#39;
  • string == str(无)
  • 如果对象为无匹配无,则无其他。
  • if object 匹配所有虚假值

答案 4 :(得分:1)

在您知道的任何时候使用Nonetype检查None无无可能性。实际上,除非你传入的返回字符串是字符串值“无”,否则你不应该设计你的应用程序来检查字符串比较的可能性。尽管是vs ==运算符差异。