這裏是我的代碼:爲什麼「append('w')」返回無?
def list_test(foo):
bar = foo.append('w')
return bar
my_input = [7,8,9]
當我運行它:
>>>print list_test(my_input)
None
它的打印輸出None
。爲什麼?我該如何解決這個問題?
注:輸出我需要的是:7,8,9,'w'
感謝。
這裏是我的代碼:爲什麼「append('w')」返回無?
def list_test(foo):
bar = foo.append('w')
return bar
my_input = [7,8,9]
當我運行它:
>>>print list_test(my_input)
None
它的打印輸出None
。爲什麼?我該如何解決這個問題?
注:輸出我需要的是:7,8,9,'w'
感謝。
list.append()
返回無以強調它是一個變異調用的事實。這種修改他們的論點的調用通常返回None。創建新的列表的電話將返回它。
如果list_test
返回修改後的名單是很重要的,那麼你的代碼可能是這樣的美好:
def list_test(foo):
foo.append('w')
return foo
my_input = [7,8,9]
>>> print list_test(my_input)
[7, 8, 9, 'w']
>>> print my_input
[7, 8, 9, 'w']
但是,如果我在寫這一點,我會按照慣例變異調用返回None,而這樣寫:
def list_test(foo):
foo.append('w')
my_input = [7,8,9]
>>> print list_test(my_input)
None
>>> print my_input
[7, 8, 9, 'w']
最後,如果你想list_test是非變異,這是它應該返回一個新的列表,而不是修改它的輸入,其中之一可能爲你工作:
def list_test(foo):
new_foo = list(foo)
new_foo.append('w')
return new_foo
def list_test(foo):
return foo + ['w']
my_input = [7,8,9]
>>> print list_test(my_input)
[7, 8, 9, 'w']
>>> print my_input
[7, 8, 9]
因爲append()
就地工作,即直接修改foo
而不是創建新列表。
append
將不會返回列表,但會改變原始列表。所以在調用foo.append()
後,foo的內容發生了變化。因此foo
本身就是新元素的「新」(舊)列表。所以,你可以只寫你的函數是這樣的:
def list_test(foo):
foo.append('w')
return foo
注意,這也意味着,你傳遞給函數的原始列表也改變了:
>>> my_input = [7,8,9]
>>> list_test(my_input)
[7, 8, 9, 'w']
>>> my_input
[7, 8, 9, 'w']
list.append()
doen't返回任何東西,因爲有用它只修改它的參數(列表)。您可能想要返回foo
而不是
那麼,我該如何解決這個問題? –
但我應該寫在我的函數,所以當我運行它,它是打印輸出[7,8,9,'w']但是當我運行「my_input」它是返回[7,8,9]? –
看到我最近的編輯。 –