对象发生了什么变化?

时间:2017-05-26 11:50:56

标签: python

如果有人能解释我以下内容,我将不胜感激。我是Python和编程方面的最新版本。可能根本就没有意义。

当我使用此片段时,它会返回None:

(in) dic = {'a':1, 'b':2}
(in) print(dic.update({'c':3})) 
(out) None

但是当我使用这个时,它会返回更新的dic:

(in) dic = {'a':1, 'b':2}
(in) dic.update({'c':3})
(in) print(dic)
(out) {'a': 1, 'b': 2, 'c': 3}

为什么?为什么我必须完全符合订单?

进一步编辑...... 好。我还不明白。与此代码有任何联系/关系:

(in) lst = [1,3,2,4,6,5]
(in) print(lst.sort())
(in) print(sorted(lst))

(out) None
(out) [1, 2, 3, 4, 5, 6]

在这两种情况下,无论是函数还是方法,都应该对列表进行排序。但  当我通过方法调用print时,它返回None。

(in) lst = [1,3,2,4,6,5]
(in) lst.sort()
(out) print(lst)

3 个答案:

答案 0 :(得分:1)

在第一种情况下,您尝试打印dic.update来电的返回值。没有一个。

在第二种情况下,您将打印修改后的字典本身。

这两个程序基本上完全不同,它与任何"命令"无关。

答案 1 :(得分:1)

type(dic.update({'c':3})) 
>>> <class 'NoneType'>

type(dic)
>>> <class 'dict'>

type(sum)
>>> <class 'builtin_function_or_method'>

尝试type(),你会发现差异。一些&#34;功能&#34;返回&#34;无&#34;时更新对象,例如object.append(),object.sort()。

答案 2 :(得分:0)

在没有阅读文档的情况下,我想update方法确实更新了对象(dic),但没有返回任何内容(None)。 print打印update返回的内容,i。即没有。尝试在第一个print(dic)之后添加print