天天看點

沒有傳回值的函數(reverse, sort,append...)

python的有些内置方法是不傳回具體的内容的,而是傳回一個None。

并不是所有的函數都需要傳回值,有一些函數隻需要在内部處理些東西,如果要輸出,可以直接通過print函數輸出資訊,那麼在這種情況下,就沒有必要傳回函數。

沒有傳回值的函數(reverse, sort,append...)

如果Python函數沒有傳回值,千萬不要把結果指派給其他變量,因為沒有傳回值,被指派的變量是空值(None類型不支援任何運算也沒有任何内建方法),當你進行操作時,可能出現下面錯誤:

>>> a = [1,2,2,3,5]
>>> a.reverse()
>>> a
[5, 3, 2, 2, 1]
>>> b = a.reverse()
>>> b
>>> a
[1, 2, 2, 3, 5]
>>> a.append(0)
>>> a
[1, 2, 2, 3, 5, 0]
>>> c = a.append(10)
>>> c
>>> a
[1, 2, 2, 3, 5, 0, 10]
>>> a.sort()
>>> a
[0, 1, 2, 2, 3, 5, 10]
>>> d = a.sort()
>>> d
>>> type(d)
<class 'NoneType'>
>>> type(c)
<class 'NoneType'>
>>> type(b)
<class 'NoneType'>
>>> type(a)
<class 'list'>
>>>
>>> print(a)
[0, 1, 2, 2, 3, 5, 10]
>>> print(a.reverse)
None # 記住這裡,如果在函數中想要翻轉,别省事,否則結果可能不是你想要的,分兩步傳回翻轉結果,如下:
>>> a
[0, 1, 2, 2, 3, 5, 10]
>>> a.reverse()
>>> print(a)
[10, 5, 3, 2, 2, 1, 0]
>>>
           

reverse,append,sort等方法就沒有傳回值,故吧b,c,d都是空的。

沒有傳回值,不使用return語句就可以了,或使用return語句,但return後面什麼都沒有。後一種情況主要是用于從函數的任意深度的代碼直接跳出函數。

參考部落格