亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

章節
問答
課簽
筆記
評論
占位
占位

Python函數參數

函數參數是需要傳遞給函數內部的數據,在前面,我們已經簡單接觸了函數的參數,現在我們正式來認識它。
函數參數可以是任意的數據類型,只要函數內部邏輯可以處理即可。

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 可將課程添加到書簽

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

0/150
提交
取消
全部 精華 我要發布
全部 我要發布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?