32.函数返回值拆包

李光朱课程 2024-03-28 00:19:56
什么是函数返回值拆包函数返回值拆包:如果一个函数通过return返回了一个元组、列表、集合,可以通过拆包的方式将返回值进行拆分到每个变量中,这就是返回值拆包。 示例: def test(): return 11, 22, 33a, b, c = test()print(a, b, c)返回值拆包的作用通过函数返回值拆包,可以快速的将具体的数据用变量进行存储,这样对数据的处理会更加方便 示例: def test(): return 11, 22, 33# 通过返回值拆包,快速使用每个数据a, b, c = test()print(a + b + c)# 没有通过返回值拆包,这样用数据时稍微复杂ret = test()print(ret[0] + ret[1] + ret[2])拆包的使用def get_my_info(): high = 178 weight = 100 age = 18 return high, weight, age# result = get_my_info()# print(result)# 通过返回值拆包,能够更加方便的对每个数据使用my_high, my_weight, my_age = get_my_info()print(my_high)print(my_weight)print(my_age)使用拆包时的注意点拆包时要注意,需要拆的数据的个数要与变量的个数相同,否则程序会异常通过星号拆包通过普通方式拆包假如有以下函数: def test(a, b, c): print(a + b + c)现在自己拥有的数据: nums = [11, 22, 33]怎样才能在调用test函数的时候,将nums给传递过去呢? def test(a, b, c): print(a + b + c)nums = [11, 22, 33]test(nums[0], nums[1], nums[2])上述代码用的方式虽然能行,但不是很简洁 为了能够用更加简洁的方式实现上述场景需求,Python可以通过*、**将数据拆包后传递 使用*拆包有时在调用函数时,这个函数需要的是多个参数,而自己拥有的是一个列表或者集合这样的数据,此时就用可以用*拆包 使用方式: *列表*元组*集合用*拆包的方式实现上述功能: def test(a, b, c): print(a + b + c)nums = [11, 22, 33]test(*nums) # 此时的*的作用就是拆包,此时*nums相当于11, 22, 33 即test(11, 22, 33)如果为数据元组时使用方式与上述代码一致: def test(a, b, c): print(a + b + c)nums = (11, 22, 33)test(*nums)集合类型同上: def test(a, b, c): print(a + b + c)nums = {11, 22, 33}test(*nums)注意: *对列表、元组、集合可以拆包,但一般都是在调用函数时用使用**拆包使用**可以对字典进行拆包,拆包的结果是命名参数 示例: def test(name, age, address): print(name) print(age) print(address)info = { "name": "顾安", "age": 18, "address": "长沙"}test(**info)'''当前**info相当于以下代码: name='顾安' age=18 address='长沙' ** 主要对字典进行拆包'''难点学习不定长参数时,掌握了*args、**kwargs 现在学习拆包时,也用到了*、** 那它们之间有什么关系呢? 答:没有任何关系,只是长得像罢了 示例一: def test1(*args, **kwargs): print("----在test1函数中----") print("args:", args) print("kwargs", kwargs)def test2(*args, **kwargs): print("----在test2函数中----") print("args:", args) print("kwargs", kwargs) test1(args, kwargs) # 在函数test1传递参数时没有进行拆包test2(11, 22, 33, name="顾安", age=18)运行结果: ----在test2函数中----args: (11, 22, 33)kwargs {'name': '顾安', 'age': 18}----在test1函数中----args: ((11, 22, 33), {'name': '顾安', 'age': 18})kwargs {}示例二: def test1(*args, **kwargs): print("----在test1函数中----") print("args:", args) print("kwargs", kwargs)def test2(*args, **kwargs): print("----在test2函数中----") print("args:", args) print("kwargs", kwargs) test1(*args, **kwargs) # 对参数进行了拆包test2(11, 22, 33, name="顾安", age=18)运行结果: ----在test2函数中----args: (11, 22, 33)kwargs {'name': '顾安', 'age': 18}----在test1函数中----args: (11, 22, 33)kwargs {'name': '顾安', 'age': 18}
0 阅读:0

李光朱课程

简介:感谢大家的关注