PythonNote035---python中星号的作用

可迭代对象的应用

一个*、迭代对象的解包

可以对字符串、元组、列表等可迭代对象进行解包

fruit = ['apple','pear','grape','banana']
*x,y=fruit
print(f"x={x},y={y}")
x=['apple', 'pear', 'grape'],y=banana

可以把list最后一个元素赋给y,其余的赋给x
对于元组同理

*x,y=(1,2,3,4,5)
print(f"x={x},y={y}")
x=[1, 2, 3, 4],y=5

一个*、可迭代对象的合并

list1 = [1,2]
list2 = ['a','b']
print(f"list1={list1},list2={list2}")
list1=[1, 2],list2=['a', 'b']

相当于解包之后再合并,最后的结果还是一维列表。对于列表来说相当于extend

print([*list1,*list2])
[1, 2, 'a', 'b']

列表中也可做extend操作,但是会改变列表的值

list1.extend(list2)
print(f"list1={list1},list2={list2}")
list1=[1, 2, 'a', 'b'],list2=['a', 'b']

两个*、字典合并

两个星号**把字典解包成关键字参数

dict1 = {"name":"jack"}
dict2 = {"age":10}
{**dict1,**dict2}
{'name': 'jack', 'age': 10}

key不能重复。。。

dict2.update(dict1)
dict2
{'age': 10, 'name': 'jack'}

update直接改变原变量,有时候不合适。可以考虑上面的方法。

定义函数中星号

一个*

def test2(a, *b):
    print(f"a={a},b={b}")
    print(b)
    print(*b)
test2(1, 2, 3)
a=1,b=(2, 3)
(2, 3)
2 3
  • 对函数传递的参数进行打包(成元组、列表或者字典)和拆解(分成单个元素),其中单用于元组和列表的打包和解包(非关键字参数)
  • 2,3作为tuple传给参数b
  • print(*b)时,对元组b做解压
test2(1, 2, 3,4)
a=1,b=(2, 3, 4)
(2, 3, 4)
2 3 4

两个*

def test3(a, **kwargs):
    print(f"a={a},kwargs={kwargs}")
    print(kwargs)
test3(a=1, b=20, c=30)
a=1,kwargs={'b': 20, 'c': 30}
{'b': 20, 'c': 30}
  • ** 就是针对关键字参数和字典的
  • 调用test3(a=1, b=20, c=30), kwargs 的值就是 {‘b’: 20, ‘c’: 30} 了。

混用

def test4(a, b=10, *args, **kwargs):
        print( a)
        print( b)
        print( args)
        print( kwargs)
test4(1, 2, 3, 4, e=5, f=6, g=7)
1
2
(3, 4)
{'e': 5, 'f': 6, 'g': 7}
print(*[1,2,3])
1 2 3

                                2022-03-08 于南京市江宁区九龙湖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值