python - 无 Python 错误/错误?

标签 python python-2.7 python-3.x types

在 Python 中,您有 None单例,在某些情况下表现得很奇怪:

>>> a = None
>>> type(a)
<type 'NoneType'>
>>> isinstance(a,None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types

首先,<type 'NoneType'>显示 None不是类型,而是 NoneType是。然而,当你运行 isinstance(a,NoneType) ,它以错误响应:NameError: name 'NoneType' is not defined

现在,鉴于此,如果您有一个输入默认设置为 None 的函数,并且需要检查,您将执行以下操作:

if variable is None:
    #do something
else:
    #do something

我不能执行以下操作的原因是什么:

if isinstance(variable,None): #or NoneType
    #do something
else:
    #do something

我只是在寻找详细的解释,以便更好地理解这一点

编辑:好的应用程序

假设我想使用 isinstance这样我就可以在 variable 的情况下做点什么有多种类型,包括None :

if isinstance(variable,(None,str,float)):
    #do something

最佳答案

你可以试试:

>>> variable = None
>>> isinstance(variable,type(None))
True
>>> variable = True
>>> isinstance(variable,type(None))
False

isinstance接受 2 个参数 isinstance(object, classinfo) 在这里,通过传递 None 您将 classinfo 设置为 None,因此会出现错误。您需要传入类型。

关于python - 无 Python 错误/错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17198466/

相关文章:

python - Keras: ValueError: Input 0 is incompatible layer 问题

python - 更改Elasticsearch中的评分功能

python - 安装自然语言工具包数据

json - 如何将每 n 行添加到 n 列?

python - 如何在 Jupyter 笔记本的 LaTeX 中自定义 numpy 数组列括号的显示格式?

python - Pyspark dataframe 列包含字典数组,想要将字典中的每个键都变成一列

python-2.7 - 从Lambda中的S3通知事件获取非ASCII文件名

macos - 虚拟环境列表

python-3.x - 在seaborn箱线图中旋转xtick标签?

python - python 2.x中不可避免的 'encoding is an invalid keyword'错误吗?