我有一個Python套件包括幾個值,我想使用方法鏈是這樣的:方法並不鏈在Python設置
>>> f = {1, 2, 3}
>>> g = f.copy().discard(3)
>>> g
>>>
但克變空。然而,它沒有鏈接工作:
>>> g = f.copy()
>>> g
{1, 2, 3}
>>> g.discard(3)
>>> g
{1, 2}
有人可以解釋我這種行爲?
我有一個Python套件包括幾個值,我想使用方法鏈是這樣的:方法並不鏈在Python設置
>>> f = {1, 2, 3}
>>> g = f.copy().discard(3)
>>> g
>>>
但克變空。然而,它沒有鏈接工作:
>>> g = f.copy()
>>> g
{1, 2, 3}
>>> g.discard(3)
>>> g
{1, 2}
有人可以解釋我這種行爲?
當你做了g = f.copy().discard(3)
,你正在存儲方法「丟棄(3)」的返回值。在這種情況下,它不返回任何內容,但會改變對象。這就是爲什麼在第二種情況下它的工作原理。
discard()
丟棄集合中的元素並返回None
。
所以當你分配
g = f.copy().discard(3)
這相當於
h = f.copy() # now h = f
g = h.discard(3) # g = None; h = {1,2}
它給你留下g = None
。
這是因爲.discard
返回None
。
所以當你做g = f.copy().discard(3)
它創建一個f
的副本,丟棄最後一個元素,然後返回None
。由於要返回的最後一件事是分配給變量的值,所以g
最後的值爲None
。
謝謝,我不明白一個變量是由鏈中最後一個方法的返回值賦值的。 –
您可以改爲f - {3}
,因爲-
集合是生產值並且不會修改其輸入。
是什麼使您得出結論:方法通常在python中鏈接? – burnpanck