2017-05-26 2 views
1

誰かが私に次のことを説明することができたら大変感謝します。私はPythonとプログラミングの最新版です。まったく意味がないかもしれません。オブジェクトには何が起こっていますか?

私はこのスニペットを使用する場合、それは私にどれも返しません:

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

をが、私はこの1つを使用する場合、それは私が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] 

関数やメソッドのいずれかのリストがおそらくソートされます。しかし、 私はそれを返しますメソッドを介して印刷を呼び出すとき。

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

'update'はあなたのdictを修正し、' None'を返します。それはコードからかなり明らかです。 – khelwood

+1

接線関連:https://nedbatchelder.com/text/names.html。 'dic'と' dic.update(...) 'は単純に2つの異なるオブジェクトに評価される式です。 – chepner

答えて

1

最初のケースでは、dic.updateコールの戻り値を印刷しようとしています。 1つではありません。

2番目のケースでは、変更された辞書自体を印刷しています。

2つのプログラムは、基本的に全く異なる処理を行い、「オーダー」とは何の関係もありません。

0

ドキュメントを読まずに、updateメソッドが実際にオブジェクト(dic)を更新しますが、何も返しません(None)。 printは、返されたものをupdate、iを返します。 e。何もない。最初のprintの直後にprint(dic)を追加してみてください。

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

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

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

タイプ()を試してみると、違いがわかります。一部の「関数」はオブジェクトを更新し、「なし」を返します。 object.append()、object.sort()。

関連する問題