分享

python中的组包与解包

 xiaoyimin 2019-12-11

关于【组包与解包】:
组包:python解释器自动将多个数据组装到一个容器中
解包:将容器中的多个数据拆出来
组包: 解释器把1,2,3自动组包成一个元组,然后赋值给a,a的类型就是元组类型的
  a = 1,2,3 # 相当于 a = (1,2,3)
  print(a) # (1, 2, 3)
  print(type(a)) # <class 'tuple'>

#解包: 解释器会自动对元组(1,2)进行 解包,然后把1赋值给m,把2赋值给n,把3赋值给3
  m,n,k = (1,2,3) # m=1,n=2,k=3
  print(m) # 1
  print(n) # 2
  print(k) # 3 

函数使用参数可以使函数变得更加通用,增加扩展性。参数的顺序有讲究,定义函数时,【形参顺序】
def func(位置参数,可变位置参数,默认参数,可变关键字参数):
  pass

解包:func(*args,**kwargs) 与 func(args,kwargs)返回的数据不同,* 或者**具有解包的作用,*用来将普通参数元组解开,**用来将关键字参数字典解开。**kwargs只能在调用函数时使用。 

下面通过两个小例子帮助理解
1.

  1. def func1(*args ,**kwargs):
  2.   print(args) # (10, 20) # ( (10, 20) , {'n': 30, 'm': 40})
  3.   print(kwargs) # {'n': 30, 'm': 40}
  4. def func2(* args ,** kwargs):
  5.   #print(args) # (10, 20)
  6.   #print(kwargs) # {'n': 30, 'm': 40}
  7.   #解包:* args -> *(10,20)->10,20
  8.   #解包:** kwargs -> **{'n': 30, 'm': 40}-> n=30,m=40
  9.   #func1(args,kwargs) # func1( (10, 20) , {'n': 30, 'm': 40}) 结果为:((10, 20), {'n': 30, 'm': 40}) {}
  10.   func1(*args,**kwargs) # func1( 10, 20 , n=30,m=40) 结果为:(10, 20) {'n': 30, 'm': 40}
  11. func2(10,20,n=30,m=40) # func2((10,20), {'n': 30, 'm': 40})

2.

  1. a = range(8)
  2. print(*a) # 解包 0 1 2 3 4 5 6 7
  3. b = [1,2,3]
  4. print(*b) #1 2 3

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多