Python3中*和**運算子的用法詳解!

老男孩IT教育機構發表於2022-12-22

  在學習python過程中,大家對*和**這兩個運算子應該都不陌生,是兩個比較常見的算術運算子。那麼你知道Python3中*和**運算子的用法是什麼嗎?以下是詳細的內容介紹。

  在python中,*和**具有語法多義性,具體來說是有四類用法。

  1、算數運算

  * 代表乘法

  ** 代表乘方

  >>>2 * 5

  //10

  >>>2 ** 5

  //32

  2、函式形參

  *args和**kwargs主要用於函式定義。

  你可以將不定數量的引數傳遞給一個函式。不定的意思是:預先並不知道,函式使用者會傳遞多少個引數給你,所以在這個場景下使用這兩個關鍵字。其實並不是必須寫成*args和**kwargs。*才是必須的,你也可以寫成*ar和**K。而寫成*args和**kwargs只是一個通俗的命名約定。

  python函式傳遞引數的方式有兩種:

  位置引數(positional argument)

  關鍵詞引數(keyword argument)

  *args與**kwargs的區別,兩者都是python中的可變引數:

  *args表示任何多個無名引數,它本質是一個tuple。

  **kwargs表示關鍵字引數,它本質上市一個dict。

  如果同時使用*args和**kwargs時,必須*args引數列要在**kwargs之前。

  def pt(*args,**kwargs)

  print('a:',args, 'k:',kwargs)

  pt(5,10, 'args='6, 'kwargs='9)

  a:(5,10),k:{'args='6, 'kwargs='9}

  3、函式實參

  它們兩個除了用作算數之外還有一個形式就是用作函式的實參,格式為*args和**kwargs。其中*args是一個元組型別,代表多個匿名引數;**kwargs是一個字典型別,代表關鍵詞引數,示例如下:

  def pt(info,info1)

  print('info:',info)

  print('info1:',info1)

  args = (5,10) # 解引用

  pt(*args) # 引數傳遞

  info:5,info1:10

  kwargs={'info1:'10, 'info:'5}

  pt(**kwargs)

  info:10,info1:5

  4、序列解包

  序列解包只需要用到*,序列解包沒有**。

  x,*y=5,10,15

  x=5

  y=[10,15]


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2929052/,如需轉載,請註明出處,否則將追究法律責任。

相關文章