• <xmp id="wgksg"><samp id="wgksg"></samp>
  • <blockquote id="wgksg"></blockquote>
  • 400-650-7353

    精品課程

    您所在的位置:首頁 > IT干貨資料 > python > 【Python基礎知識】Python函數的可變位置參數和可變關鍵字參數

    【Python基礎知識】Python函數的可變位置參數和可變關鍵字參數

    • 發布: python培訓
    • 來源:python干貨資料
    • 2021-02-09 15:32:45
    • 閱讀()
    • 分享
    • 手機端入口

    1)可變位置參數

    在Python中,函數在定義時可以擁有任意數量的參數,這種參數稱為可變參數?梢酝ㄟ^定義可變參數,來接收調用函數時多余的參數?勺儏涤址譃榭勺兾恢脜岛涂勺冴P鍵字參數,它們的區別如下:

    ①可變位置參數用來接收調用函數時多余的位置參數;在函數體內,可變位置參數是一個元組。

    ②可變關鍵字參數用來接收調用函數時多余的關鍵字參數;在函數體內,可變關鍵字參數是一個字典。

    可變位置參數是在普通的參數前面加一個星號“*”,一般命名為args(arguments的縮寫),但實際上它可以用任意合法的名稱:

    1. >>> def f(*args):   # *args是可變位置參數 
    2. ...     print(args)   # 打印args 
    3. ...     print(type(args))   # 打印args的類型 
    4. ...     for i in args:   # 迭代元組 
    5. ...         print(i) 
    6. ... 
    7. >>> f('Python'423.14
    8. ('Python'423.14
    9. <class 'tuple'
    10. Python 
    11. 42 
    12. 3.14 

    由運行結果可知,可變位置參數在函數體內是一個元組。另外,函數體內的args不需要加星號。

    在定義函數時,如果不確定所需要的參數個數,那么可以使用可變參數。假設要寫一個算術加法運算的程序,不使用可變參數時,只能將確定個數的數字相加:

    1. >>> def add_numbers(a, b, c):   # 這個函數只能讓三個數字相加 
    2. ...     print(a + b + c) 
    3. ...  
    4. >>> add_numbers(123
    5. 6 

    如果使用可變參數,那么可以實現讓任意個數的數字相加:

    1. >>> def add_numbers(*numbers):  # 將可變位置參數命名為numbers 
    2. ...     sum = 0 
    3. ...     for i in numbers:   # 由于numbers是元組,因此,可以使用for循環迭代 
    4. ...         sum += i 
    5. ...     print(sum) 
    6. ...  
    7. >>> add_numbers(123456
    8. 21 
    9. >>> add_numbers(421925
    10. 86 
    11. >>> add_numbers()   # 可變位置參數也可以傳遞0個參數 
    12. 0 

    可變位置參數可以與普通的參數混用。假設要打印一份水果店的公告,其中第一個參數是普通的參數,代表水果店的名字,第二個參數是可變位置參數,用來接收除了水果店名字之外的其他位置參數:

    1. >>> def fruit_shop(shop_name, *fruits): 
    2. ...     print('{0}水果店開業啦!'.format(shop_name)) 
    3. ...     print('在售的水果有:'
    4. ...     for fruit in fruits: 
    5. ...         print(fruit) 
    6. ...  
    7. >>> fruit_shop('小明''蘋果''香蕉''西瓜'
    8. 小明水果店開業啦! 
    9. 在售的水果有: 
    10. 蘋果 
    11. 香蕉 
    12. 西瓜 

    函數調用時,'小明'被shop_name接收,剩余的值都被*fruits接收,并存儲在fruits元組中。

    【Python基礎知識】Python函數的可變位置參數和可變關鍵字參數

    2)可變關鍵字參數

    可變關鍵字參數是在普通的參數前面加兩個星號“**”,一般命名為kwargs(keyword arguments的縮寫),但實際上它可以用任意合法的名稱:

    1. >>> def f(**kwargs):   # **kwargs是可變關鍵字參數 
    2. ...     print(kwargs) 
    3. ...     print(type(kwargs))   # 打印kwargs的類型 
    4. ...     for k, w in kwargs.items():   # 迭代字典 
    5. ...         print('{0}--{1}'.format(k, w)) 
    6. ...  
    7. >>> f(name='Ming', age=19)   # 使用關鍵字參數才能將值存儲到kwargs中 
    8. {'name''Ming''age'19
    9. <class 'dict'
    10. name--Ming 
    11. age--19 
    12. >>> f()   # 可變關鍵字參數也可以傳遞0個參數 
    13. {} 

    可變關鍵字參數可以與普通的參數混用。假設在前面的“水果店”程序中,不僅打印水果的名稱,還打印水果的個數:

    1. >>> def fruit_shop_v2(shop_name, **fruits): 
    2. ...     print('{0}水果店開業啦!'.format(shop_name)) 
    3. ...     print('在售的水果有:'
    4. ...     for fruit, count in fruits.items():   # 迭代字典 
    5. ...         print('{0}{1}個'.format(fruit, count)) 
    6. ...  
    7. >>> fruit_shop_v2(shop_name='小明',  蘋果=10, 香蕉=3, 橘子=201)   
    8. 小明水果店開業啦! 
    9. 在售的水果有: 
    10. 蘋果10個 
    11. 香蕉3個 
    12. 橘子201個 

    下面是一個更復雜的“水果店”程序,四個參數中,shop_name代表商店名稱,open_time代表開業時間,*fruits代表水果種類,**other_info代表水果店還想打印的額外信息:

    1. >>> def fruit_shop_v3(shop_name, open_time='10月1日', *fruits, **other_info): 
    2. ...     print('{0}水果店將在{1}開業!'.format(shop_name, open_time)) 
    3. ...     if fruits: 
    4. ...         print('在售的水果有:'
    5. ...         for fruit in fruits: 
    6. ...             print(fruit) 
    7. ...     if other_info: 
    8. ...         print('以下是額外信息:'
    9. ...         for item, info in other_info.items(): 
    10. ...             print('{0}:{1}'.format(item, info)) 
    11. ... 
    12. >>> fruit_shop_v3('小明')   # shop_name既沒默認值,又不是可變參數,故不能缺省 
    13. 小明水果店將在101日開業! 
    14. >>> fruit_shop_v3('小明''1月1日')   # 提供shop_name和open_time 
    15. 小明水果店將在11日開業! 
    16. >>> fruit_shop_v3(open_time='1月1日')   # 如果不指定shop_name的值,會報錯 
    17. Traceback (most recent call last): 
    18.   File "<stdin>", line 1in <module> 
    19. TypeError: fruit_shop_v3() missing 1 required positional argument: 'shop_name' 
    20. >>> fruit_shop_v3('小明''蘋果''香蕉''橘子')   
    21. 小明水果店將在蘋果開業! 
    22. 在售的水果有: 
    23. 香蕉 
    24. 橘子 
    25. >>> fruit_shop_v3('小明''10月1日''蘋果''香蕉''橘子'
    26. 小明水果店將在101日開業! 
    27. 在售的水果有: 
    28. 蘋果 
    29. 香蕉 
    30. 橘子 
    31. >>>  
    32. >>> fruit_shop_v3('小明''10月1日''蘋果''香蕉', 地址='北京市', 開店折扣='八折')   # 多余參數全部被**other_info接收 
    33. 小明水果店將在101日開業! 
    34. 在售的水果有: 
    35. 蘋果 
    36. 香蕉 
    37. 以下是額外信息: 
    38. 地址:北京市 
    39. 開店折扣:八折 

     

    課程好禮申請領取
    您的姓名
    您的電話
    意向課程
     

    中公優就業

    官方QQ

    掃描上方二維碼或點擊一鍵加群,免費領取價值599元網課,加群暗號:599。 一鍵加群

    >>本文地址:
    注:本站稿件未經許可不得轉載,轉載請保留出處及源文件地址。

    推薦閱讀

    優就業:ujiuye

    關注中公優就業官方微信

    • 關注微信回復關鍵詞“大禮包”,領80G學習資料
    QQ交流群
    領取免費網課
    (加群備注“網站”)
    IT培訓交流群 加入群聊 +
    軟件測試 加入群聊 +
    全鏈路UI/UE設計 加入群聊 +
    Python+人工智能 加入群聊 +
    互聯網營銷 加入群聊 +
    Java開發 加入群聊 +
    PHP開發 加入群聊 +
    VR/AR游戲開發 加入群聊 +
    大前端 加入群聊 +
    大數據 加入群聊 +
    Linux云計算 加入群聊 +
    優就業官方微信
    掃碼回復關鍵詞“大禮包”
    領取80G學習資料

    測一測
    你適合學哪門IT技術?

    1 您的年齡

    2 您的學歷

    3 您更想做哪個方向的工作?

    獲取測試結果
     
    課程資料、活動優惠 領取通道
     
     
    A级毛片毛片免费观看久,A毛看片免费观看视频,毛片曰本女人牲交视频视频