首页 / 资讯中心 / 文章详情

Python66:核心语法-函数进阶-不定长参数

Python66:核心语法-函数进阶-不定长参数 ★ FEATURED ARTICLE
不定长参数不定长参数也叫可变参数用于函数定义及调用时参数个数不确定0个或多个的场景。类型位置传递关键字传递不定长参数-位置传递*args注意传递的所有匹配的位置参数都会被args变量收集这些参数会合并封装为一个元组args是元组类型注意并不会封装关键字参数。注意args只是约定俗成的变量名并不是关键字这里可以使用任何合法的变量名如 *data。# --------函数 - 不定长参数位置参数 *args -- 元组---------- # 需求根据传入的这批数据计算这批数据的最小值最大值平均值 def calc_data(*args): min_data min(args) max_data max(args) avg_data sum(args) / len(args) return min_data, max_data, round(avg_data, 1) # 调用函数 print(calc_data(2, 7, 9, 10, 45)) # (2, 45, 14.6) print(calc_data(2, 7, 9, 10, 45, 73, 37, 93, 92, 111, 222)) # (2, 222, 63.7)不定长参数-关键字传递**kwargs(args-arguments, kwargs-keywordargs.)注意参数是以 键值 形式传递的关键字参数这些 键值 参数都会被kwargs接受并合并封装为一个字典类型。注意kwargs只是约定俗成的变量名并不是关键字这里可以使用任何合法的变量名如 **options。# --------函数 - 不定长参数关键字参数 **kwargs -- 字典---------- # 需求根据传入的这批数据计算这批数据的最小值最大值平均值 def calc_data(*args, **kwargs): 根据传入的这批数据计算这批数据的最小值最大值平均值 :param args: 不定长位置参数需要计算的这批数据 :param kwargs:不定长关键字参数 round: 保留的小数位个数 print: 是否打印输出 :return: 最小值最大值平均值 min_data min(args) max_data max(args) avg_data sum(args) / len(args) print(kwargs) return min_data, max_data, round(avg_data, 1) # 调用函数 print(calc_data(2, 7, 9, 10, 45, round3, printTrue)) print(calc_data(2, 7, 9, 10, 45, 73, 37, 93, 92, 111, 222))这里暂时改变小数位数为3位小数失败了但获取到kwargs了。D:\py_project_heima\.venv\Scripts\python.exe D:\py_project_heima\第二章\test.py {round: 3, print: True} (2, 45, 14.6) {} (2, 222, 63.7)# ------------修正改进--------------- # 需求根据传入的这批数据计算这批数据的最小值最大值平均值 def calc_data(*args, **kwargs): 根据传入的这批数据计算这批数据的最小值最大值平均值 :param args: 不定长位置参数需要计算的这批数据 :param kwargs:不定长关键字参数 round: 保留的小数位个数 print: 是否打印输出 :return: 最小值最大值平均值 min_data min(args) max_data max(args) avg_data sum(args) / len(args) if kwargs.get(round) is not None: avg_data round(avg_data, kwargs.get(round)) if kwargs.get(print): print(f计算出来的最小值{min_data}最大值{max_data}平均值{avg_data}) return min_data, max_data, avg_data # 调用函数 print(calc_data(2, 7, 9, 10, 45, round3, printTrue)) print(calc_data(2, 7, 9, 10, 45, 73, 37, 93, 92, 111, 222, round3, printTrue)) 计算出来的最小值2最大值45平均值14.6 (2, 45, 14.6) 计算出来的最小值2最大值222平均值63.727 (2, 222, 63.727) # --------对比---------- # 需求根据传入的这批数据计算这批数据的最小值最大值平均值 def calc_data(*args, **kwargs): 根据传入的这批数据计算这批数据的最小值最大值平均值 :param args: 不定长位置参数需要计算的这批数据 :param kwargs:不定长关键字参数 round: 保留的小数位个数 print: 是否打印输出 :return: 最小值最大值平均值 min_data min(args) max_data max(args) avg_data sum(args) / len(args) if kwargs.get(round) is not None: avg_data round(avg_data, kwargs.get(round)) if kwargs.get(print): print(f计算出来的最小值{min_data}最大值{max_data}平均值{avg_data}) return min_data, max_data, avg_data # 调用函数 print(calc_data(2, 7, 9, 10, 45, 73, 37, 93, 92, 111, 222, round4, printFalse)) (2, 222, 63.7273) 小结1. 什么是不定长参数参数个数不确定此时就可以使用不定长参数解决这类问题2. 不定长参数的分类*args不定长位置参数函数调用时通过位置参数传递多个参数封装到一个元组tuple中**kwargs不定长关键字参数函数调用时通过关键字参数传递多个参数封装到一个字典dict。3. 应用场景区别*args适用于处理数量不确定的数据**kwargs适用于处理数量不确定的选项函数的配置参数用来定制函数的行为def calc_data(*args, **kwargs):当不定长位置参数和不定长关键字参数两者同时存在的情况下先定义不定长位置参数*args再写不定长关键字参数**kwargs声明本篇学习笔记参考黑马程序员相关课程部分素材来源于网络公开资料及本人补充文中为个人整理复盘仅供学习交流使用。
阅读完成 · 觉得有帮助?
咨询建站