函數參數是需要傳遞給函數內部的數據,在前面,我們已經簡單接觸了函數的參數,現在我們正式來認識它。
函數參數可以是任意的數據類型,只要函數內部邏輯可以處理即可。
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 可將課程添加到書簽
舉報