以下のコードの結果がわかりません。結果はなぜNoneですか?
m = {(1,2):1.0, (5,4):0.5, (3,4):0.75}
print(m.clear())
result: **None**
しかし、私が次のように書くと
m.clear()
print(m)
result : **{}**
私は他の結果を持っています。
以下のコードの結果がわかりません。結果はなぜNoneですか?
m = {(1,2):1.0, (5,4):0.5, (3,4):0.75}
print(m.clear())
result: **None**
しかし、私が次のように書くと
m.clear()
print(m)
result : **{}**
私は他の結果を持っています。
を返すの戻り値を出力m.clear()していますNone。メソッドが所定の辞書をクリアするNoneため、返されます。.clear()
慣例により、変更可能な構造をインプレースで変更するデフォルトの Python 型のメソッドは、 を返しますNone。たとえば、list.sort()や にも同じことが当てはまります。set.add()
2 番目のサンプルは、の戻り値を出力しませんm.clear()。クリアした後、空の辞書を出力します。
print(m.clear())呼び出しによって返された値を出力しますm.clear()。print mオブジェクトを印刷しますm。明らかに 2 つの非常に異なるものなので、それらが異なる出力を生成することは当然のことです。
辞書型のドキュメントclearには、単に次のように書かれています:
ディクショナリからすべての項目を削除します。
それがそれです。何かを返すとは文書化されていませんが、何かを返すすべてのメソッドのすべてのドキュメントは、それらが返すものについて明示的です (通常、コレクションを変更するメソッドは return のみを返しNoneます)。したがって、何かを返すことを期待する理由はありません。