012、*args 和 **kwargs 拆包
函数调用时,拆包
1、 * 对 元组 / 列表 拆包
2、** 对字典拆包 , 2个** 对应 key 、value
示例代码如下:
def func_0(a, b, c): print(a, b, c) t = (1, 2, 4) func_0(*t) # 对元组拆包 # 练习题一: # 将输入的数字相乘之后除以20取余数 # 定义函数,用不定长参数实现 def func(*args): result = 1 for i in args: result *= int(i) print('所有数相乘的结果为:{0}'.format(result)) print('结果除以20取余数:{0}'.format(result % 20)) num = input('请输入所有要计算的数字,以逗号分隔 :') num_list = num.split(',') print(num_list) func(*num_list) # 对列表拆包 # # 练习题二 # # 列表去重,定义一个函数 # # list = [1, 3, 1, 4, 3, 5] # 方法一: list_a = [1, 5, 3, 1, 4, 3, 5] new_list = [] for i in list_a: if i not in new_list: new_list.append(i) print(new_list) # 方法二:定义一个函数 def duplicate_removal(*args): new_list = [] for i in args: if i not in new_list: new_list.append(i) print(new_list) list_1 = [1, 5, 3, 1, 4, 3, 5] duplicate_removal(*list_1) # 对列表拆包 # 练习题三: # 用函数封装:输入一个人的身高(m)和体重(kg),根据BMI公式(体重除以身高的平方) # 计算他的BMI指数,例如:一个65公斤的人,身高是1.62m ,则BMI是65 / 1.62**2 = 24.8 def bmi(**kwargs): result = kwargs['weight'] / (kwargs['height']**2) print(result) my_info = {'weight': 65, 'height': 1.70} bmi(**my_info) # 对字典拆包 # 用set 集合 去重 a = [1, 2, 3, 2, 1] s = set(a) print(s) print(list(s))
执行结果如下:
D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day06\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day06/hh/test_01.py 1 2 4 请输入所有要计算的数字,以逗号分隔 :12,3,1,2 ['12', '3', '1', '2'] 所有数相乘的结果为:72 结果除以20取余数:12 [1, 5, 3, 4] [1, 5, 3, 4] 22.49134948096886 {1, 2, 3} [1, 2, 3] Process finished with exit code 0