1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢(xún)
      選擇下列產(chǎn)品馬上在線(xiàn)溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      python3教程:*和**的打包和解包的用法

      一. 打包參數(shù)

      1. * 的作用:在函數(shù)定義中,收集所有的位置參數(shù)到一個(gè)新的元組,并將這個(gè)元組賦值給變量args

      >>> def f(*args):
          print(args)
      
          
      >>> f()
      ()
      >>> f(1)
      (1,)
      >>> f(1, 2, 3, 4)
      (1, 2, 3, 4)
      >>> 
      

      2. ** 的作用:在函數(shù)定義中,收集關(guān)鍵字參數(shù)傳遞給一個(gè)字典,并將這個(gè)字典賦值給變量kwargs

      >>> def f(**kwargs):
          print(kwargs)
      
          
      >>> f()
      {}
      >>> f(a=1, b=2)
      {'a': 1, 'b': 2}
      >>> 
      

      二. 解包參數(shù)

      1. * 的作用:在函數(shù)調(diào)用中,* 能夠?qū)⒃M或者列表解包成不同的參數(shù)

      >>> def func(a, b, c, d):
          print(a, b, c, d)
      
          
      >>> args = (1, 2, 3, 4)
      >>> func(*args)
      1 2 3 4
      
      >>> args = [1, 2, 3, 4]
      >>> func(*args)
      1 2 3 4
      

      2. **的作用:在函數(shù)調(diào)用中,**會(huì)以鍵/值的形式解包一個(gè)字典,使其成為獨(dú)立的關(guān)鍵字參數(shù)

      >>> def func(a, b, c, d):
          print(a, b, c, d)
      
          
      >>> kwargs = {"a": 1, "b": 2, "c": 3, "d": 4}
      >>> func(**kwargs)
      1 2 3 4
      

      三. 注意

      1. 在函數(shù)定義時(shí),*表示打包,在函數(shù)體內(nèi)部, * 仍然表示解包(print(*args)實(shí)際上也算是調(diào)用了print函數(shù))

      >>> def foo(*args, **kwargs):
          print(args)       #未解包參數(shù)
          print(*args)      #解包參數(shù)
      
          
      >>> 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. 打包和解包并不能脫離函數(shù)而存在

      表面上看并沒(méi)有什么函數(shù),實(shí)際上是有的,用的就是format的函數(shù)調(diào)用

      成都創(chuàng)新互聯(lián)公司專(zhuān)注于封丘企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城網(wǎng)站開(kāi)發(fā)。封丘網(wǎng)站建設(shè)公司,為封丘等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站制作,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

      >>> c = {"name": 'zhang', "age": 2}
      >>> **c
      SyntaxError: invalid syntax
      >>> 
      >>> "Name:{name}, Age:{age}".format(**c)
      'Name:zhang, Age:2'
      

      參考源碼中對(duì)format函數(shù)的定義

      但是這個(gè)字典解包不能用print函數(shù)輸出

      '''
      學(xué)習(xí)中遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流群:
      尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)!
      '''
      >>> print(**c)
      Traceback (most recent call last):
        File "", line 1, in 
          print(**c)
      TypeError: 'age' is an invalid keyword argument for this function
      >>> 
      

      因?yàn)樯鲜鲎值浣獬鰜?lái)的形式是這樣的:

      **c = name='zhang',age=2
      

      3. 在ddt中的應(yīng)用

      @ddt.data(*all_caseDatas)中,data是一個(gè)函數(shù),調(diào)用函數(shù)的時(shí)候,參數(shù)*all_caseDatas自動(dòng)將參數(shù)列表[{}, {}, {}...]解包為{},{},{}...,在def data(*values)函數(shù)中,*會(huì)自動(dòng)將各個(gè)位置參數(shù)打包成新的元組({}, {}, {}...),然后@ddt.data就可以獲取每一條數(shù)據(jù)作為測(cè)試用例了

      @ddt.data(*all_caseDatas)
          def test_my_request(self, case_data):
              global global_var
              if len(global_var) != 0 and case_data["request_data"] is not None:
                  for key, value in global_var.items():
                      if case_data["request_data"].find(key) != -1:
                          case_data["request_data"] = case_data["request_data"].replace(key, value)
      

      四. 練習(xí)

      請(qǐng)寫(xiě)出下列代碼的運(yùn)行結(jié)果

      def f(str1, *args, **kwargs):
          print(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)
      
      print("================")
      
      f("python", l, d)
      f("python", *t)
      f("python", *l, **d)
      f("python", q="winning", **d)
      
      
      運(yùn)行結(jié)果:
      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(str1, *args, **kwargs):中將4, 5, 6重新打包成新的元組(4, 5, 6)再傳遞給變量args


      當(dāng)前標(biāo)題:python3教程:*和**的打包和解包的用法
      標(biāo)題URL:http://www.ef60e0e.cn/article/dsogjsc.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        岫岩| 南丰县| 睢宁县| 香河县| 阜新市| 双流县| 凤凰县| 那曲县| 河北省| 正阳县| 平南县| 屯昌县| 蓝田县| 和硕县| 灌阳县| 亳州市| 礼泉县| 颍上县| 湖南省| 道真| 三都| 娄底市| 新兴县| 夏津县| 囊谦县| 扶风县| 白山市| 保山市| 嘉荫县| 勐海县| 荔浦县| 墨竹工卡县| 咸阳市| 衡东县| 商水县| 张家界市| 枣强县| 古浪县| 湖北省| 塔河县| 南宫市|