を設定します。ただし、チェーンなしで動作します。方法は、Pythonでチェーンをしませんが、私はPythonが複数の値からなる設定していると私はこのような連鎖の方法を使用したい
>>> g = f.copy()
>>> g
{1, 2, 3}
>>> g.discard(3)
>>> g
{1, 2}
誰かがこの現象を説明できますか?
を設定します。ただし、チェーンなしで動作します。方法は、Pythonでチェーンをしませんが、私はPythonが複数の値からなる設定していると私はこのような連鎖の方法を使用したい
>>> g = f.copy()
>>> g
{1, 2, 3}
>>> g.discard(3)
>>> g
{1, 2}
誰かがこの現象を説明できますか?
g = f.copy().discard(3)
を実行すると、メソッド "discard(3)"の戻り値がgに格納されます。この場合、何も返しませんが、オブジェクトを変更します。このため、2番目のシナリオでは動作します。
discard()
は、セット内の要素を破棄し、None
を返します。
あなたは
g = f.copy().discard(3)
を割り当てるときに、これはg = None
であなたを残し
h = f.copy() # now h = f
g = h.discard(3) # g = None; h = {1,2}
に相当します。
.discard
がNone
を返すためです。
g = f.copy().discard(3)
を実行すると、f
のコピーが作成され、最後の要素が破棄され、None
が返されます。返される最後のものは変数に代入されるものなので、g
はNone
の値で終わります。
ありがとう、私は変数がチェーンの最後のメソッドの戻り値によって割り当てられることを理解していませんでした。 –
セットの-
が値を生成し、入力を変更しないため、f - {3}
の代わりにfoを使用できます。
どのようにして、メソッドは一般的にはPythonで連鎖するという結論に至りましたか? – burnpanck