在python中經常會遇見引數時*args與**kwargs的情況,其作用就是在蒐集與分配引數。
1、序列解包
在python中,可以通過如下情況進行賦值:
a,b,c = [1,2,3]
此時等號左右兩邊的元素個數必須保持一致,如果不一致就會報錯。
使用運算子星號( * )收集多餘的值
>>
> a, b,
*rest =[5
,6,7
,8,9
]>>
> rest[7
,8,9
]>>
> a,
*b, c =
"abcdefg"
>>
> a,b,c
('a',[
'b',
'c',
'd',
'e',
'f']
,'g'
)>>
>
2、收集引數
某個變數前有單個 * 號,代表其收集的引數會放到乙個元組中,但是單個 * 號不能收集關鍵字引數
某個變數面前有兩個 * 號,代表其收集的引數會放到乙個字典中,其收集的是關鍵字引數
形式如: *args、**kwargs
示例1:
>>
>
defmiddle
(x,*y, z)
:print
(x, y, z)
#如果此時不給關鍵字z賦值,python就會報錯
>>
> middle(1,
2,3,z=6)
1(2,
3)6
示例2:**kwargs收集關鍵字引數
>>
>
defprint_kwargs
(**kwargs)
:print
(kwargs)
>>
> print_kwargs(x=
1,y=
2,z=3)
>>
>
示例3:*args與**kwargs混合使用
>>
>
defprint_k
(x,y,z,
*args,
**kwargs)
:print
(x,y,z)
print
(args)
print
(kwargs)
>>
> print_k(1,
2,3,
5,6,
7, a=
1, b=2)
123(
5,6,
7)>>
>
python中 python中的 與
這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...
python中的物件 Python中的變數 物件
由於沒時間系統學習下python 只能見乙個問題 乙個問題了 一 初級 物件 關於python中的資料型別,今天重新認識了下。參考 首先,python中,物件才有型別,變數是沒有型別的,它只是物件的 引用 其次,python中物件被分為兩類 可更改物件和不可更改物件 包括numbers,string...
python中的引數傳遞 python中的引數傳遞
begin 前面在介紹python的六大資料型別的時候提到根據資料可變和不可變進行的資料型別分類 python3 的六個標準資料型別中 不可變資料 3 個 number 數字 string 字串 tuple 元組 可變資料 3 個 list 列表 dictionary 字典 set 集合 pytho...