python 中參數傳遞 * 和 ** 的問題

來源:互聯網
上載者:User

標籤:name   csdn   click   mod   extra   lin   pass   序列   定義   

python 中參數傳遞 * 和 ** 的問題,以 tuple和dict方式傳遞參數   在python中,有時會看到這樣的函數定義:
    def   p1(*arg1,**arg2):
          pass
也有看到這樣的函數調用:
    i=5
    function(*i)
這些都是什麼意思呢?
1.傳入的參數產生 tuple 和 dict
      def    p1(*a1,**a2):
             print a1,‘/n‘,a2
       p1(1,2,3,4,arg5=5,arg6=6)
       結果為:
       (1,2,3,4)
       {‘arg5‘:5,‘arg6‘:6}
2.傳入的tuple 或 dict解析成參數序列
    def   q1(arg1,arg2,arg3,arg4):
          print arg1,arg2,arg3,arg4
    tu=(1,2,3,4)
    print ‘extract from tuple /n‘
    q1(*tu)

    di={‘arg1‘:1,‘arg2‘:2,‘arg3‘:3,‘arg4‘:4}
    print ‘/nextract from dict /n‘
    q1(**di)
    結果為:
    extract from tuple
    1234
    extract from dict
    1234
它們是互逆過程,在需要傳遞函數和函數參數的時候很有用
如:
    def    worker1(arg1):
          print arg1
    def    worker2(arg1,arg2):
          print arg1,arg2
    def   calling(callable,arg):
          callable(*arg)
if __name__="__main__":
    calling(worker1,(1,))
    calling(worker2,(1,2))

python 中參數傳遞 * 和 ** 的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.