实战IT培训机构_黄色激情网站_IT培训班选大学生IT技术培训中心_黄色激情视频网站_中公优就业

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

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

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

1)可變位置參數

在Python中,函數在定義時可以擁有任意數量的參數,這種參數稱為可變參數。可以通過定義可變參數,來接收調用函數時多余的參數。可變參數又分為可變位置參數和可變關鍵字參數,它們的區別如下:

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

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

可變位置參數是在普通的參數前面加一個星號“*”,一般命名為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. 開店折扣:八折 

 

文章“【Python基礎知識】Python函數的可變位置參數和可變關鍵字參數”已幫助

>>本文地址:http://www.jecan.cn/zhuanye/2021/66399.html

THE END  

聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。

1 您的年齡

2 您的學歷

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

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯網營銷互聯網營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯網嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網頁設計網頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發VR/AR
  • 網絡安全網絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發智能機器人
 

快速通道fast track

近期開班時間TIME

主站蜘蛛池模板: 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 福建自考_福建自学考试网 | 上海刑事律师|刑事辩护律师|专业刑事犯罪辩护律师免费咨询-[尤辰荣]金牌上海刑事律师团队 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 活性氧化铝|无烟煤滤料|活性氧化铝厂家|锰砂滤料厂家-河南新泰净水材料有限公司 | 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 【ph计】|在线ph计|工业ph计|ph计厂家|ph计价格|酸度计生产厂家_武汉吉尔德科技有限公司 | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 通风气楼_通风天窗_屋顶风机-山东美创通风设备有限公司 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 电池挤压试验机-自行车喷淋-车辆碾压试验装置-深圳德迈盛测控设备有限公司 | 烽火安全网_加密软件、神盾软件官网 | 工控机-图像采集卡-PoE网卡-人工智能-工业主板-深圳朗锐智科 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 智能气瓶柜(大型气瓶储存柜)百科 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 智能气瓶柜(大型气瓶储存柜)百科| 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 北京康百特科技有限公司-分子蒸馏-短程分子蒸馏设备-实验室分子蒸馏设备 | 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | 天坛家具官网| 顶空进样器-吹扫捕集仪-热脱附仪-二次热解吸仪-北京华盛谱信仪器 | 掺铥光纤放大器-C/L波段光纤放大器-小信号光纤放大器-合肥脉锐光电技术有限公司 | 彩信群发_群发彩信软件_视频短信营销平台-达信通 | 耐压仪-高压耐压仪|徐吉电气 | 算命免费_生辰八字_免费在线算命 - 卜算子算命网 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 工业铝型材-铝合金电机壳-铝排-气动执行器-山东永恒能源集团有限公司 | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 安规电容|薄膜电容|陶瓷电容|智旭JEC安规电容厂家 | 衬氟止回阀_衬氟闸阀_衬氟三通球阀_衬四氟阀门_衬氟阀门厂-浙江利尔多阀门有限公司 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | 手板-手板模型-手板厂-手板加工-生产厂家,[东莞创域模型] | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 制丸机,小型中药制丸机,全自动制丸机价格-甘肃恒跃制药设备有限公司 | PVC快速门-硬质快速门-洁净室快速门品牌厂家-苏州西朗门业 | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 |