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

Python 为什么str(None)不是str(None)?,python,string,Python,String,我使用str(object)将一个对象转换为字符串。我想使用字符串检查我是否有一个None对象(在我的例子中,除非对象是None,否则它永远不会是None) 问题是这种情况永远不会过去。我怎么检查这个箱子 str(None)返回False的方式与str(None)相同。为什么?使用 if string == 'None': # Do something. 查看python中“is”的含义。使用 if string == 'None': # Do something. if obj

我使用str(object)将一个对象转换为字符串。我想使用字符串检查我是否有一个None对象(在我的例子中,除非对象是None,否则它永远不会是None)

问题是这种情况永远不会过去。我怎么检查这个箱子

str(None)返回False的方式与str(None)相同。为什么?

使用

if string == 'None':
   # Do something.
查看python中“is”的含义。

使用

if string == 'None':
   # Do something.
if object is None:
    print("the object is None")
else:
    print("the object exists")

查看python中“is”的含义。

每次转换时,另一个对象的字符串转换通常不是同一个对象;它每次生成一个新字符串。
运算符比较标识,而不是值。您需要
==

if object is None:
    print("the object is None")
else:
    print("the object exists")
>>> l = [1,2,3]
>>> str(l) is str(l)
False
>>> str(l) == str(l)
True

每次转换时,另一个对象的字符串转换通常不是同一个对象;它每次生成一个新字符串。
运算符比较标识,而不是值。您需要
==

>>> l = [1,2,3]
>>> str(l) is str(l)
False
>>> str(l) == str(l)
True

首先,
object
是一个预定义的类,是所有类的共同祖先。然而,这与你的问题无关

在调用
string=str(None)
之后,变量字符串将保存一个python字符串“None”。您可以调用
type(string)#should
进行确认。要解决此问题,可以将其替换为:

  • string==“无”
  • string==str(无)
  • 如果对象为None则匹配None和nothing
  • 如果对象匹配所有falsy值

首先,
对象是一个预定义的类,是所有类的共同祖先。然而,这与你的问题无关

在调用
string=str(None)
之后,变量字符串将保存一个python字符串“None”。您可以调用
type(string)#should
进行确认。要解决此问题,可以将其替换为:

  • string==“无”
  • string==str(无)
  • 如果对象为None则匹配None和nothing
  • 如果对象匹配所有falsy值

当您知道“无”是有效的可能性时,使用“无”检查“无”。事实上,除非传入的返回字符串是字符串值“None”,否则无论如何,您都不应该通过字符串比较来设计应用程序来检查这种可能性。尽管存在is vs==运算符的差异。

在您知道“无”是有效的可能性时,使用Nonetype检查None。事实上,除非传入的返回字符串是字符串值“None”,否则无论如何,您都不应该通过字符串比较来设计应用程序来检查这种可能性。尽管存在is vs==运算符的差异。

您将等式与标识混淆了。请尝试
string='None'或string==str(None)
。请参阅或小心不要将内置的
对象
构造函数用作变量名来覆盖它…不要将
对象
用作变量名
>:-(
您混淆了等式和标识。请尝试
string=='None'或string==str(None)
。请查看或小心不要将内置的
对象作为变量名来重写它…不要将
对象
作为变量名!
:-(