以下のコードの結果がわかりません。結果はなぜ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
ます)。したがって、何かを返すことを期待する理由はありません。