>>> set(None) *** TypeError: 'NoneType' object is not iterable这是一个问题,但下面的代码不是:
>>> a=set() >>> a.add(None)为什么呢?
正如错误信息所告诉您的那样,set()
需要一个可迭代对象。
set([None])
注意:对于list
、tuple
等也是同样适用。add(elem)
:将元素elem添加到set中。
可迭代对象:能够一次返回其成员的对象。可迭代对象包括所有序列类型(例如list、str和tuple)以及一些非序列类型(如dict和file),以及您定义的具有__iter__()或__getitem__()方法的任何类的对象。可迭代对象可用于for循环和许多其他需要序列的地方(如zip(),map()等)。当可迭代对象作为参数传递给内置函数iter()时,它将返回该对象的迭代器。这个迭代器对值的集合进行一次遍历。使用可迭代对象时,通常不需要调用iter()或处理迭代器对象。for语句会自动为您完成这个操作,在循环期间创建一个临时无名变量来保存迭代器。另请参阅iterator、sequence和generator。In [18]: hash(None)
Out[18]: 39746304
In [19]: iter(None)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/jon/<ipython console> in <module>()
TypeError: 'NoneType' object is not iterable
In [21]: dir(None)
Out[21]:
['__class__',
'__delattr__',
'__doc__',
'__format__',
'__getattribute__',
'__hash__',
'__init__',
'__new__',
'__reduce__',
...
'__subclasshook__']
In [22]: dir([])
Out[22]:
[...
'__hash__',
'__getitem__',
...
'__iter__',