1

我不明白下面代码的结果。为什么是结果None

 m = {(1,2):1.0, (5,4):0.5, (3,4):0.75}

print(m.clear())
result: **None**

但是如果我写成

   m.clear()
    print(m)
   result : **{}**

我还有其他结果。

4

2 回答 2

4

您正在打印 的返回值m.clear(),它返回None。它返回None是因为该.clear()方法清除了原地字典。

按照惯例,默认 Python 类型上的任何就地改变可变结构的方法都返回None. 例如,这同样适用于list.sort()set.add()

您的第二个示例不打印 的返回值m.clear()。清除后它会打印空字典。

于 2013-08-09T11:03:02.760 回答
4

print(m.clear())打印调用返回的值m.clear()print m打印对象m;显然是两个非常不同的东西,因此它们产生不同的输出也就不足为奇了。

字典类型的文档clear简单地说:

从字典中删除所有项目。

这就是它的作用。它没有记录为返回任何东西,而所有确实返回某些东西的方法的所有文档都明确说明了它们返回的内容(通常是改变集合的方法只返回None)。所以没有理由期望它返回任何东西。

于 2013-08-09T11:09:31.427 回答