Tre*_*reg 24 python types python-3.x nonetype
在Python 3中,我想检查value是字符串还是字符串None.
一种方法是
assert type(value) in { str, NoneType }
Run Code Online (Sandbox Code Playgroud)
但是NoneTypePython的位置在哪里?
没有任何导入,使用NoneType产品NameError: name 'NoneType' is not defined.
Mar*_*ers 30
您可以使用type(None)获取类型对象,但是您想在isinstance()此处使用,而不是type() in {...}:
assert isinstance(value, (str, type(None)))
Run Code Online (Sandbox Code Playgroud)
该NoneType对象不会在任何地方暴露.
我根本不会使用类型检查,我会使用:
assert value is None or isinstance(value, str)
Run Code Online (Sandbox Code Playgroud)
作为None一个单身人士(非常有目的)并NoneType明确禁止继承子类:
>>> type(None)() is None
True
>>> class NoneSubclass(type(None)):
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: type 'NoneType' is not an acceptable base type
Run Code Online (Sandbox Code Playgroud)
types.NoneType 正在 Python 3.10 中重新引入。
改进的模块
重新引入了
types.EllipsisType,types.NoneType和types.NotImplementedType类,提供了一组易于由类型检查器解释的新类型。(由 Bas van Beek 在bpo-41810 中贡献。)
关于更改的讨论是出于对 的需求types.EllipsisType,导致types.NoneType也被添加以保持一致性。
| 归档时间: |
|
| 查看次数: |
8965 次 |
| 最近记录: |