周大胖子 发表于 2023-8-25 15:53:00

python 中星号的作用




# 星号的作用
# 1. 装包
a, b, *c = 1, 2, 3, 4
d(a)
d(b)
d(c)


# 1
# 2
#


# 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])
#

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 =
a, *l = r1
d(a)
# 1
d(l)
#

b, *l = r2
d(l)
#

页: [1]
查看完整版本: python 中星号的作用