<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python中*args和**kwargs的博弈

          共 2448字,需瀏覽 5分鐘

           ·

          2021-09-11 23:54

          對于Python初學(xué)者而言,*args 和 **kwargs 這兩個變量可能一時半會理解不了。其實(shí)這些并不是什么特殊的參數(shù),只是編程人員約定的變量名字。其中args 是 arguments 的縮寫,表示位置參數(shù);kwargs 是 keyword arguments 的縮寫,表示關(guān)鍵字參數(shù)。接下來我們就來一起了解他們的用法以及在什么情況下使用?

          *args和**kwargs可以同時在函數(shù)的定義中,但是*args必須在**kwargs前面.


          *args用法



          * args 和 ** args 主要用于函數(shù)定義,可以將不定數(shù)量的參數(shù)傳遞給一個函數(shù)。

          這里不定的意思是:預(yù)先并不知道,函數(shù)使用者會傳遞多少個參數(shù)給你,所在在這個場景下使用這兩個關(guān)鍵字。* args 是用來發(fā)送一個 非鍵值 的可變數(shù)量的參數(shù)列表給一個函數(shù)。

          傳遞任意數(shù)量的參數(shù)

          當(dāng)你不確定你的函數(shù)里將要傳遞多少參數(shù)時你可以用*args.例如,它可以傳遞任意數(shù)量的參數(shù)。

          >>> def print_everything(*args):        for count, thing in enumerate(args):...         print '{0}. {1}'.format(count, thing)...>>> print_everything('apple', 'banana', 'cabbage')0. apple1. banana2. cabbage

          在函數(shù)處新增x和y變量

          在函數(shù)中如果定義了變量x和y,*args放在函數(shù)中可以新增x和y的變量,簡答方便。

          >>> def func(x,y,*args):        print(type(x))        print(x)        print(y)        print(type(args))        print(args)    print_func(1,2,'one',[])
          >>><class 'int'>12<class 'tuple'>('one', [])

          將*args放在函數(shù)變量最前面

          將*args放在函數(shù)變量最前面時,可能會報錯,對變量x和y都有影響。如下:
          def func(*args,x,y):    print(type(x))    print(x)    print(y)    print(type(args))    print(args)

          運(yùn)行時出現(xiàn)如下報錯信息:

          TypeError: func() missing 2 required keyword-only arguments'x' and 'y'

          意思是 函數(shù) print_func找不到關(guān)鍵詞參數(shù) x 和 y

          所以若 *args 不是在最后,則需要在參數(shù)傳入時,明確定義 *args后面的變量參數(shù)名,如下:

          def func(*args,x,y):    print(type(x))    print(x)    print(y)    print(type(args))    print(args)print_func(1,2,'one',[],x='x',y='y')

          可以正確輸出

          <class 'str'>xy<class 'tuple'>(1, 2, 'one', [])

          **kwargs用法



          **kwargs允許你將不定長度的 【鍵值對 key-value 】,作為參數(shù)傳遞給一個函數(shù)。如果你想要在一個函數(shù)里處理帶名字的參數(shù),你應(yīng)該使用**kwargs

          **kwargs允許你使用沒有事先定義的參數(shù)名:

          >>> def table_things(**kwargs):...     for name, value in kwargs.items():...         print '{0} = {1}'.format(name, value)...>>> table_things(apple = 'fruit', cabbage = 'vegetable')cabbage = vegetableapple = fruit




          組合使用 args,*args 和 **kwargs 來調(diào)用函數(shù)

          命名參數(shù)首先獲得參數(shù)值然后所有的其他參數(shù)都傳遞給*args**kwargs.命名參數(shù)在列表的最前端

          def func(x, *args, **kwargs):    print(x)    print(args)    print(kwargs)
          print_func(1, 2, 3, 4, y=1, a=2, b=3, c=4)

          運(yùn)行結(jié)果

          1(2, 3, 4){'y': 1, 'a': 2, 'b': 3, 'c': 4}



          推薦閱讀

          (點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)

          簡易的服務(wù)器接口開發(fā)入門教程

          教你用Python制作實(shí)現(xiàn)自定義字符大小的簡易小說閱讀器

          小程序云開發(fā)項(xiàng)目的創(chuàng)建與配置

          匯總超全Matplotlib可視化最有價值的 50 個圖表(附 Python 源代碼)(一)

          超詳細(xì)講解CTC理論和實(shí)戰(zhàn)

          ODBC連接主流數(shù)據(jù)庫的配置方法

          教你用python進(jìn)行數(shù)字化妝,可愛至極

          加速Python列表和字典,讓你代碼更加高效

          老鐵,三連支持一下,好嗎?↓↓↓


          點(diǎn)分享

          點(diǎn)點(diǎn)贊

          點(diǎn)在看

          瀏覽 51
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文字幕第98页 | 无码人妻一区二区三区密桃手机版 | 亚洲视频第1页 | 中文字幕人成人乱码亚洲电影 | 囯产一级持黄视频 |