python中包是什么,python中解包是什么意思

  python中包是什么,python中解包是什么意思

  python中的*和* *可以让一个函数支持任意数量的参数。它们在函数定义和调用上有不同的用途。

  1.packing parameter *的函数:在函数定义中,将所有位置参数收集到一个新的元组中,并将这个元组赋给变量args def f(*args):

  打印(参数)

  f()

  ()

  女(1)

  (1,)

  f(1,2,3,4)

  * *的(1,2,3,4)函数:在函数定义中,收集关键字参数并传递给一个字典,将这个字典赋给变量kwargsdef (* * kwargs):

  印刷品(夸脱)

  f()

  {}

  f(a=1,b=2)

  {a: 1, b: 2} 2。解包参数*的作用:在函数调用中,*可以将元组或列表解包成不同的参数def func(a,b,c,d):

  打印(a、b、c、d)

  args=(1,2,3,4)

  func(*args)

  1 2 3 4

  args=[1,2,3,4]

  func(*args)

  1 3 4 * *的作用:在函数调用中,* *会以key/value的形式解包一个字典,使其成为一个独立的关键字参数def func(a,b,c,d):

  打印(a、b、c、d)

  kwargs={a: 1, b: 2, c: 3, d: 4}

  func(* *克瓦查)

  1 3 4 3.注1。定义函数时,*表示打包,在函数体内部,*仍然表示解包(print(*args)实际调用打印函数)def foo(*args,**kwargs):

  Print(args) # Unpacked参数

  Print(*args) #解包参数

  v=(1,2,4)

  d={a:1, b:12}

  foo(v,d)

  ((1,2,4),{a: 1, b: 12})

  (1,2,4) {a: 1, b: 12}2。打包和拆包,没有功能是不能存在的。表面上看,其实有一些函数,用的是format的函数调用。

  c={ 姓名:张,年龄:2}

  **c

  语法错误:无效语法

  姓名:{name},年龄:{age}”。格式(**c)

  姓名:张,年龄:2 参见源代码中格式函数的定义。

  但是,此字典解包不能通过打印功能输出。

  打印(**c)

  回溯(最近一次呼叫):

  模块中文件“pyshell#40”的第1行

  打印(**c)

  类型错误:“age”是此函数的无效关键字参数,因为上面的字典求解的形式如下:

  **c=name=zhang ,age=2,但是打印功能只支持*args,不支持**kwargs。

  3.ddt中的application @ DDT . data(* all _ casedata)中,数据是一个函数。调用该函数时,参数* all _ casedata自动解包参数列表[{},{},{}.]到{},{},{}.在定义数据中(*)

  @ddt.data(*all_caseDatas)

  定义测试_我的请求(自我,案例_数据):

  全球global_var

  if len(global_var)!=0且case_data[request_data]不为无:

  对于键,global_var.items()中的值:

  if case_data[request_data]。找(键)!=-1:

  案例数据[请求数据]=案例数据[请求数据]。替换(键,值)IV。练习请写出下面代码的运行结果

  def f(str1,*args,**kwargs):

  打印(str1,args,kwargs)

  l=[1,2,3]

  t=[4,5,6]

  d={a:7, b:8, c:9}

  f(1,2)

  f(1,2,3, python )

  f(python ,a=1,b=2,c=3)

  打印(==============)

  f(python ,l,d)

  f(python ,*t)

  f(python ,*l,**d)

  f(python ,q=winning ,**d)

  运行结果:

  1 (2,) {}

  1 (2,3, python) {}

  python () {a: 1, b: 2, c: 3}

  ================

  python ([1,2,3],{a: 7, b: 8, c: 9}) {}

  python (4,5,6) {}

  python (1,2,3) {a: 7, b: 8, c: 9}

  Python () {A: 7, B: 8, Q: Winning , C: 9}需要注意的是,f(python ,*t)先将列表T解包成4,5,6,然后在def F (STR 1,* args,* * * *中解包

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: