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))
View Code

  执行结果如下:

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
View Code

 

posted @ 2021-07-28 09:27  空-山-新-雨  阅读(65)  评论(0编辑  收藏  举报