函數參數是需要傳遞給函數內部的數據,在前面,我們已經簡單接觸了函數的參數,現在我們正式來認識它。
函數參數可以是任意的數據類型,只要函數內部邏輯可以處理即可。
def print_param(param):
print(param)
對于print_param函數,由于函數的邏輯是直接打印參數,并沒有做任何別的邏輯,所以這個函數可以接受整數、浮點數、list、tuple、dict等等的數據類型。
print_param(1)
print_param('3.1415926')
print_param([1, 2, 3, 4, 5])
但是,有時候由于函數的實現關系,需要特定的參數,就比如前面實現的求絕對值的函數my_abs(),如果傳遞一個字符串,就會引起錯誤。
def my_abs(x):
if x >= 0:
return x
else:
return -x
my_abs('str param')
# 報錯
TypeError: '>=' not supported between instances of 'str' and 'int'
為了保證函數的正常運行,有時候需要對函數入參進行類型的校驗,Python提供isinstance()函數,可以判斷參數類型,它接收兩個參數,第一個是需要判斷的參數,第二個是類型。
isinstance(100, int) # ==> True
isinstance(100.0, int) # ==> False
isinstance('3.1415926', str) # ==> True
有了isinstance,就可以優化my_abs函數,不在里面運行出錯了。
def my_abs(x):
if not isinstance(x, int) or not isinstance(x, float):
print('param type error.')
return None
if x >= 0:
return x
else:
return -x
請實現函數func,當參數類型為list時,返回list中所有數字類型元素的和,當參數類型為tuple時,返回tuple中所有數字類型元素的乘積。
參考答案:
def func(param):
if isinstance(param, list):
result = 0
for item in param:
if isinstance(item, int) or isinstance(item, float):
result += item
return result
elif isinstance(param, tuple):
result = 1
for item in param:
if isinstance(item, int) or isinstance(item, float):
result *= item
return result
return None
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報