2014-06-12 60 views
1

我正在學習Python並正在從本書學習潛入Python。它說:附加一個值返回值的函數範圍()

The built−in range function returns a list of integers. In its simplest form, it takes an upper limit and returns a zero−based list counting up to but not including the upper limit.

根據它說的,它返回一個列表。我認爲我可以用追加函數給它添加一個值,但我不能。

>>> l = range(7) 
>>> l 
[0, 1, 2, 3, 4, 5, 6] 
>>> l.append(13) 
>>> l 
[0, 1, 2, 3, 4, 5, 6, 13] 
>>> l = range(7).append(13) 
>>> l 

它不打印任何東西,是什麼原因?

+2

備註:'range'只返回Python 2.x中的列表。在Python 3中,你會得到一個'AttributeError:'範圍'對象沒有屬性'append'' –

回答

6

原因是list.append就地運行,因此總是返回None

換句話說,這條線:

l = range(7).append(13) 

是相同的:

l = None 

還要注意,您張貼的例子證明,追加值列表由range返回按預期工作,如果您自行撥打list.append

>>> l = range(7) 
>>> l.append(13) # Call list.append on its own line 
>>> l # And it works as expected 
[0, 1, 2, 3, 4, 5, 6, 13] 
>>>