0
点赞
收藏
分享

微信扫一扫

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)

{'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 于南京市江宁区九龙湖


举报

相关推荐

0 条评论