老莫的笔记本  
  
查看: 108|回复: 0

python 中星号的作用

[复制链接]

664

主题

880

帖子

5153

积分

超级版主

Rank: 8Rank: 8

积分
5153
发表于 2023-8-25 15:53:00 | 显示全部楼层 |阅读模式



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


  7. # 1
  8. # 2
  9. # [3, 4]


  10. # 2 在定义函数时,我们可以定义一个以一个或两个星号为前缀的参数,以捕获不限制数量的参数输入。总结如下:
  11. # ● 以 一个 * 为前缀的参数可以将任意数量的参数以元组形式传入
  12. # ● 以两个 ** 为前缀的参数可以将任意数量的参数以字典形式传入
  13. def abc(*args):
  14.     print(args)


  15. def cbd(**kwargs):
  16.     print(kwargs)


  17. abc(1, 2, 4)
  18. # cbd({'w':6,'t':7,'age':12})  错误的写法
  19. cbd(w='F', age=18, sg='165')


  20. # {'w': 'F', 'age': 18, 'sg': '165'}

  21. # 3. 限制函数必须以 关键字形式 写入参数
  22. def mvc(*, ab, ac):
  23.     print(ab)
  24.     print(ac)


  25. # mvc('参数1', '参数2') 错误的写法 会报错
  26. # 下面的是正确的写法 必须使用关键字
  27. mvc(ab='参数1', ac='参数2')
  28. # 参数1
  29. # 参数2


  30. # 4. 解包 (就是把列表 元组 集合拆散成一个一个 )
  31. #  字典解包 得用 ** 两个星号
  32. u1 = ['a', 'b', 'c']
  33. u2 = ['c', 'd', 'n']
  34. u4 = {1, 2, 3}
  35. u5 = {3, 6}
  36. u6 = {'m1': 1, 'm2': 6}
  37. u7 = {'m3': 1, 'm4': 8}

  38. d([*u1, *u2])
  39. # ['a', 'b', 'c', 'c', 'd', 'n']

  40. d([*u4, *u5])
  41. # [1, 2, 3, 3, 6]

  42. d({*u4, *u5})
  43. # {1, 2, 3, 6}

  44. d({*u6, *u7})
  45. # {'m2', 'm3', 'm1', 'm4'}

  46. d({**u6, **u7})
  47. # {'m1': 1, 'm2': 6, 'm3': 1, 'm4': 8}


  48. # 5. 扩展可迭代对象解包 无论是元组还是列表 返回值 都是列表
  49. r1 = (1, 2, 3)
  50. r2 = [1, 2, 3, 4]
  51. a, *l = r1
  52. d(a)
  53. # 1
  54. d(l)
  55. # [2, 3]

  56. b, *l = r2
  57. d(l)
  58. # [2, 3, 4]

复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表