1. 程式人生 > >python 在列表,元組,字典變數前加*號。。

python 在列表,元組,字典變數前加*號。。

在python基礎學習中可能遺漏這一點,現在補上;

在一個列表、元組或字典變數前加*,結果如下

可以發現,在列表前加*號,會將列表拆分成一個一個的獨立元素,不光是列表、元組、字典,由numpy生成的向量也可以拆分;

那這些又有什麼用呢?瞭解過函式中*args和**kwargs的人應該知道,這兩個形參都接收若干個引數,通常我們將其稱為引數組;

  • *args:接收若干個位置引數,轉換成元組tuple形式
  • **kwargs:接收若干個關鍵字引數,轉換成字典dict形式

ps:需要注意的是位置引數*args,一定要在關鍵字引數**kwargs前

看下面的例子;

不難發現,如果不加*,add函式將整個列表當做一個元素使用,也就是add(([1,2,4,5],))。

而帶有*號的引數,此時相當於add((1, 2, 4, 5));

*號也可以作用於二維的列表;

顯然也是將列表進行拆分,結果是兩個一維列表;

 

結果也與上面所說相同;

最後需要注意的是:

  • 可迭代物件才可以使用*號拆分;
  • 帶*號變數嚴格來說並不是一個變數,而更應該稱為引數,它是不能賦值給其他變數的;