對函數進行調用,就會產生一個返回的值,我們一般把這個值賦給某個變量,或者放進表達式中來用;比如:
如果函數沒有返回值,更確切的講,這些函數的返回值是空(None)。
看個例子,計算給定半徑的圓的面積的函數:
$ cat a.py
#!/bin/python
import math
def area(radius):
a = math.pi * radius**2
return a
radius = 3
print area(radius)
$ python a.py
28.2743338823
在有返回值的函數里面,返回語句可以包含表達式。這個返回語句的意思是:立即返回下面這個表達式作為返回值。返回語句里面的表達式可以隨便多復雜都行,所以,上面計算面積的函數可以寫成:
return math.pi * radius**2
另外,有一些臨時變量可以讓后續的調試過程更簡單。所以有時候可以多設置幾條返回語句,每一條都對應一種情況。
$ cat b.py
#!/bin/python
def absolute_value(x):
if x < 0:
return -x
else:
return x
x = "-10"
print absolute_value(x)
$ python b.py
-10
因為這些返回語句對應的是不同條件,因此實際上最終只會有一個返回動作執行,上面的例子就執行了return -x
返回語句運行的時候,函數就結束了,也不會運行任何其他的語句了。返回語句后面的代碼,執行流程里所有其他的位置都無法再觸碰了,這種代碼叫做【死亡代碼】。
在有返回值的函數里面,建議要確認一下每一種存在的可能,來讓函數觸發一個返回語句。下面例子中:
def absolute_value(x):
if x < 0:
return -x
else:
return x
這個函數就是錯誤的,因為一旦x等於0了,兩個條件都沒滿足,沒有觸發返回語句,函數就結束了。執行流程走完這個函數之后,返回的就是空(None),而本應該返回0的絕對值的。
所以添加上等於0時的if判斷:
$ cat b.py
#!/bin/python
def absolute_value(x):
if x < 0:
return -x
elif x == 0:
return 0
else:
return x
x = 0
print absolute_value(x)
結束。