- # 星号的作用
- # 1. 装包
- a, b, *c = 1, 2, 3, 4
- d(a)
- d(b)
- d(c)
- # 1
- # 2
- # [3, 4]
- # 2 在定义函数时,我们可以定义一个以一个或两个星号为前缀的参数,以捕获不限制数量的参数输入。总结如下:
- # ● 以 一个 * 为前缀的参数可以将任意数量的参数以元组形式传入
- # ● 以两个 ** 为前缀的参数可以将任意数量的参数以字典形式传入
- def abc(*args):
- print(args)
- def cbd(**kwargs):
- print(kwargs)
- abc(1, 2, 4)
- # cbd({'w':6,'t':7,'age':12}) 错误的写法
- cbd(w='F', age=18, sg='165')
- # {'w': 'F', 'age': 18, 'sg': '165'}
- # 3. 限制函数必须以 关键字形式 写入参数
- def mvc(*, ab, ac):
- print(ab)
- print(ac)
- # mvc('参数1', '参数2') 错误的写法 会报错
- # 下面的是正确的写法 必须使用关键字
- mvc(ab='参数1', ac='参数2')
- # 参数1
- # 参数2
- # 4. 解包 (就是把列表 元组 集合拆散成一个一个 )
- # 字典解包 得用 ** 两个星号
- u1 = ['a', 'b', 'c']
- u2 = ['c', 'd', 'n']
- u4 = {1, 2, 3}
- u5 = {3, 6}
- u6 = {'m1': 1, 'm2': 6}
- u7 = {'m3': 1, 'm4': 8}
- d([*u1, *u2])
- # ['a', 'b', 'c', 'c', 'd', 'n']
- d([*u4, *u5])
- # [1, 2, 3, 3, 6]
- d({*u4, *u5})
- # {1, 2, 3, 6}
- d({*u6, *u7})
- # {'m2', 'm3', 'm1', 'm4'}
- d({**u6, **u7})
- # {'m1': 1, 'm2': 6, 'm3': 1, 'm4': 8}
- # 5. 扩展可迭代对象解包 无论是元组还是列表 返回值 都是列表
- r1 = (1, 2, 3)
- r2 = [1, 2, 3, 4]
- a, *l = r1
- d(a)
- # 1
- d(l)
- # [2, 3]
- b, *l = r2
- d(l)
- # [2, 3, 4]
复制代码 |