我不明白下面代码的结果。为什么结果为None
?
m = {(1,2):1.0, (5,4):0.5, (3,4):0.75}
print(m.clear())
result: **None**
但如果我写作
m.clear()
print(m)
result : **{}**
我还有其他结果。
答案 0 :(得分:4)
您正在打印m.clear()
的返回值,该值返回None
。它会返回None
,因为.clear()
方法会清除字典 。
按照惯例,默认Python类型上的任何方法都会在适当的位置改变可变结构,返回None
。例如,同样适用于list.sort()
或set.add()
。
您的第二个示例不会打印m.clear()
的返回值。清除后,它会打印空字典。
答案 1 :(得分:4)
print(m.clear())
打印调用m.clear()
返回的值。 print m
打印对象m
;显然有两个非常不同的东西,所以它们产生不同的输出并不令人惊讶。
字典类型的documentation只是简单地说clear
:
从字典中删除所有项目。
这就是它的作用。它没有被记录为返回任何内容,而做所有方法的所有文档都返回了一些内容,这些文档是关于它们返回的内容(通常是更改集合的方法只返回None
)。因此,没有理由期望它返回任何东西。