Ant*_*dak 5 python set method-chaining
我有一个由几个值组成的Python集,我想使用这样的方法链:
>>> f = {1, 2, 3}
>>> g = f.copy().discard(3)
>>> g
>>>
Run Code Online (Sandbox Code Playgroud)
但是g变空了.但是,它没有链接:
>>> g = f.copy()
>>> g
{1, 2, 3}
>>> g.discard(3)
>>> g
{1, 2}
Run Code Online (Sandbox Code Playgroud)
有人能解释一下这种行为吗?
discard()丢弃集合中的元素并返回None.
所以当你分配
g = f.copy().discard(3)
Run Code Online (Sandbox Code Playgroud)
这相当于
h = f.copy() # now h = f
g = h.discard(3) # g = None; h = {1,2}
Run Code Online (Sandbox Code Playgroud)
离开你g = None.
小智 2
当您这样做时g = f.copy().discard(3),您将在 g 中存储方法“discard(3)”的返回值。在这种情况下,它不会返回任何内容,但会更改对象。这就是为什么在第二种情况下它起作用的原因。