python 星號(hào)(*)的多種用途
結(jié)論
概括的來(lái)說(shuō),就是對(duì)修飾的變量進(jìn)行拆分, 對(duì)修飾的形式參數(shù)進(jìn)行參數(shù)聚集。
單*號(hào),將被修飾的變量按元素方式拆分, 對(duì)修飾的形式參數(shù)進(jìn)行參數(shù)聚集。
雙**號(hào),將被修飾的變量按鍵值對(duì)進(jìn)行拆分, 對(duì)修飾的形式參數(shù)進(jìn)行參數(shù)聚集。
修飾實(shí)例變量時(shí)
- 作用: 講被修飾的實(shí)例變量或者可迭代對(duì)象進(jìn)行拆分
def func3(a, b, c): print("param a is {}, param b is {}, param c is {}".format(a, b, c)) if __name__ == '__main__': arr1 = [1, 2, 3] print(arr1, sep='\t') # [1, 2, 3]\t 正常輸出 print(*arr1, sep='\t') # 1\t2\t3 每個(gè)數(shù)字中間以\t分割 arr2 = [[1, 2, 3], [3, 4, 5], [5, 6, 7]] print(list(zip(*arr2))) # [(1, 3, 5), (2, 4, 6), (3, 5, 7)] 二維數(shù)組的行轉(zhuǎn)列 dictionary = {'a': 1, 'b': 2, 'c': 3} print(dictionary, sep='\t') # {'a': 1, 'b': 2, 'c': 3}\t 正常輸出 print(*dictionary, sep='\t') # a\tb\tc\t 每個(gè)字母中間以\t分割 print(func3(**dictionary)) # param a is 1, param b is 2, param c is 3
比較使用和不使用*號(hào)后產(chǎn)生的結(jié)果就可以發(fā)現(xiàn),單*號(hào)將可迭代對(duì)象進(jìn)行了拆分,按單個(gè)元素方式依次將數(shù)據(jù)傳進(jìn)方法。
配合其他方法使用可以優(yōu)雅的完成矩陣的行轉(zhuǎn)列操作。
雙**號(hào)的使用,是將變量對(duì)象拆分成鍵值對(duì)的形式,所以只有dict類型可以使用。
注意上面的func3,他需要三個(gè)形參,但是我們只傳入**dict_obj, 就完成了功能。
可迭代對(duì)象有:list, dict, tuple, generator, iterator
出現(xiàn)在方法的形式參數(shù)位置
- 作用: 放在參數(shù)列表的末尾, 作為不定長(zhǎng)的參數(shù)列表的形參接受對(duì)象。 (可以類比Java的可變參數(shù)列表)
def func1(*args): print("type", type(args)) # type <class 'tuple'> print("all arguments: ", args) # all arguments: (1, 2, 3) print("second argument: ", args[1]) # second argument: 2 def func2(**kw): print("type", type(kw)) # type <class 'dict'> print("all arguments: ", kw) # all arguments: {'a': 1, 'b': 2, 'c': 3} print("second argument: ", kw['a']) # second argument: 1 if __name__ == '__main__': a, b, c = 1, 2, 3 func1(a, b, c) func2(a=a, b=b, c=c)
盡管函數(shù)func1的形參只有一個(gè),但被傳遞三個(gè)參數(shù),程序還是可以正常運(yùn)行。
因?yàn)?args將三個(gè)參數(shù)以tuple形式存儲(chǔ),作為一個(gè)整體傳遞給方法func1。
同理,func2的**kw形參將傳入的三個(gè)參數(shù)壓成一個(gè)dict進(jìn)行使用。
具體實(shí)驗(yàn)代碼可以通過(guò)Github獲得。
以上就是python 星號(hào)(*)的多種用途的詳細(xì)內(nèi)容,更多關(guān)于python 星號(hào)(*)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- python傳參時(shí)一個(gè)星號(hào)和兩個(gè)星號(hào)的區(qū)別小結(jié)
- 一文帶你掌握python中*星號(hào)的用法
- Python 中星號(hào)(*)的用法小結(jié)
- Python中的星號(hào)*還能這么用你知道嗎
- python星號(hào)(*)和雙星號(hào)(**)?函數(shù)動(dòng)態(tài)參數(shù)匹配及解包操作方法
- Python中星號(hào)的五種用法小結(jié)
- Python中你所不知道的星號(hào)?*?用法
- Python 帶星號(hào)(* 或 **)的函數(shù)參數(shù)詳解
- Python星號(hào)*與**用法分析
- Python參數(shù)傳遞中雙星號(hào)(**)和單星號(hào)(*)是作用
相關(guān)文章
pytorch張量和numpy數(shù)組相互轉(zhuǎn)換
在使用pytorch作為深度學(xué)習(xí)的框架時(shí),經(jīng)常會(huì)遇到張量tensor和矩陣numpy的類型的相互轉(zhuǎn)化的問(wèn)題,本文主要介紹了pytorch張量和numpy數(shù)組相互轉(zhuǎn)換,感興趣的可以了解一下2024-02-02利用python如何在前程無(wú)憂高效投遞簡(jiǎn)歷
這篇文章主要給大家介紹了關(guān)于利用python如何在前程無(wú)憂高效投遞簡(jiǎn)歷的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05詳解python opencv、scikit-image和PIL圖像處理庫(kù)比較
這篇文章主要介紹了詳解python opencv、scikit-image和PIL圖像處理庫(kù)比較,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12python實(shí)現(xiàn)輸入三角形邊長(zhǎng)自動(dòng)作圖求面積案例
這篇文章主要介紹了python實(shí)現(xiàn)輸入三角形邊長(zhǎng)自動(dòng)作圖求面積案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Python實(shí)現(xiàn)包含min函數(shù)的棧
這篇文章主要介紹了Python實(shí)現(xiàn)包含min函數(shù)的棧,可實(shí)現(xiàn)棧中元素的計(jì)算及進(jìn)棧出棧等操作,需要的朋友可以參考下2016-04-04