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()

2 番目のサンプルは、の戻り値を出力しませんm.clear()。クリアした後、空の辞書を出力します。

于 2013-08-09T11:03:02.760 に答える
4

print(m.clear())呼び出しによって返された値を出力しますm.clear()print mオブジェクトを印刷しますm。明らかに 2 つの非常に異なるものなので、それらが異なる出力を生成することは当然のことです。

辞書型のドキュメントclearには、単に次のように書かれています:

ディクショナリからすべての項目を削除します。

それがそれです。何かを返すとは文書化されていませんが、何かを返すすべてのメソッドのすべてのドキュメントは、それらが返すものについて明示的です (通常、コレクションを変更するメソッドは return のみを返しNoneます)。したがって、何かを返すことを期待する理由はありません。

于 2013-08-09T11:09:31.427 に答える